<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.pcgamer.com/feeds/tag/controllers/" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from PC Gamer in Controllers ]]></title>
                <link>https://www.pcgamer.com/hardware/controllers</link>
        <description><![CDATA[ All the latest controllers content from the PC Gamer team ]]></description>
                                    <lastBuildDate>Tue, 08 Sep 2026 14:00:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ SteelSeries throws everything but the kitchen sink in the feature list of its Aeon Pro controller ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Last month I got to take a look at what SteelSeries calls the "world’s first dual-dock controller built for PC and Xbox": the Aeon Pro. Its dual-docking claim to fame is that it allows you to switch between PC and Xbox gameplay seamlessly, without re-pairing. That's thanks to dual USB inputs on the base station, one connected to PC and the other to Xbox.</p><p>The thing is, that feature itself sounds pretty niche to my diminutive ears, given there probably aren't tons of PC gamers also using Xbox (though I am open to being corrected on that). Instead, I'm much more interested in what else the controller has to offer, and for what cost.</p><p>On this front, we're looking at a *gulp* $260/£230/€260 price tag, which places it firmly in top-end territory at least as far as its pricing is concerned. Having had my hands on it—albeit only briefly—I can say it does <em>feel </em>like a premium controller, with pretty solid build quality, great grips, and comfy button presses. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>I'm not a fan of the ABXY buttons, however, as they feel slightly mushy for my tastes, but only in the same way that some other premium controllers are and that others seem to not mind. For me, it feel like there's a bit of slow pre-travel before the button 'clicks'. This is unlike on the Scuf controller I like, the <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Valor Pro</a>, the ABXY buttons on which have barely any pre-travel and immediately click down.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/K7w9NHWpt2jFRjBwuAcpAX.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hbcXL4BLepjbBGcEcqToAX.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In addition to the dual connectivity and general feel, you're getting a whole bunch of other features—everything but the kitchen sink, it seems. We're talking four back paddles, Hall effect thumbsticks and triggers, the ability to switch the triggers to instant click actuation, replaceable thumbsticks with a place to put them in the dock, hot swappable batteries which can charge in the base station, and an OLED screen.</p><p>Aesthetically, I'm not very keen on the grey-and-white combo, but the black version looks lovely. It also reaches up to 1K polling on PC, which is fine by my books for a controller, but is a little behind some of the recent 8K competition.</p><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="NozXePbbYYVpvooiFphP6i" name="image - 2026-09-08T123826.423" alt="Two SteelSeries Aeon Pro controllers, one in black, one in white." src="https://cdn.mos.cms.futurecdn.net/NozXePbbYYVpvooiFphP6i.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: SteelSeries)</span></figcaption></figure><p>All of this would be fine if it wasn't for that price tag, which does put a pretty big dampener on things. Our James recently reviewed the <a href="https://www.pcgamer.com/hardware/controllers/scuf-omega-review/" target="_blank">$220 Scuf Omega</a> and found it difficult to justify for that price tag given the competition in the likes of the $220 <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Raiju V3 Pro</a>, the $200 <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro</a>, and the $90 <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a>.</p><p>I'd have to spend more time with it to know for sure, but I worry the SteelSeries will face the same fate by pricing itself so high, especially without 8K polling. Though for those who use both Xbox and PC, some might consider it worth the cost for that dual connectivity feature alone, though given pairing isn't the most difficult thing in the world, even then I'm not so sure.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/steelseries-throws-everything-but-the-kitchen-sink-in-the-feature-list-of-its-aeon-pro-controller/</link>
                                                                            <description>
                            <![CDATA[ It can seamlessly switch between Xbox and PC, but is very expensive. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8KDMoreRdsBEAvJrWXnSg8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 08 Sep 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A SteelSeries Aeon Pro controller.]]></media:description>                                                            <media:text><![CDATA[A SteelSeries Aeon Pro controller.]]></media:text>
                                <media:title type="plain"><![CDATA[A SteelSeries Aeon Pro controller.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Last month I got to take a look at what SteelSeries calls the "world’s first dual-dock controller built for PC and Xbox": the Aeon Pro. Its dual-docking claim to fame is that it allows you to switch between PC and Xbox gameplay seamlessly, without re-pairing. That's thanks to dual USB inputs on the base station, one connected to PC and the other to Xbox.</p><p>The thing is, that feature itself sounds pretty niche to my diminutive ears, given there probably aren't tons of PC gamers also using Xbox (though I am open to being corrected on that). Instead, I'm much more interested in what else the controller has to offer, and for what cost.</p><p>On this front, we're looking at a *gulp* $260/£230/€260 price tag, which places it firmly in top-end territory at least as far as its pricing is concerned. Having had my hands on it—albeit only briefly—I can say it does <em>feel </em>like a premium controller, with pretty solid build quality, great grips, and comfy button presses. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>I'm not a fan of the ABXY buttons, however, as they feel slightly mushy for my tastes, but only in the same way that some other premium controllers are and that others seem to not mind. For me, it feel like there's a bit of slow pre-travel before the button 'clicks'. This is unlike on the Scuf controller I like, the <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Valor Pro</a>, the ABXY buttons on which have barely any pre-travel and immediately click down.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/K7w9NHWpt2jFRjBwuAcpAX.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hbcXL4BLepjbBGcEcqToAX.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In addition to the dual connectivity and general feel, you're getting a whole bunch of other features—everything but the kitchen sink, it seems. We're talking four back paddles, Hall effect thumbsticks and triggers, the ability to switch the triggers to instant click actuation, replaceable thumbsticks with a place to put them in the dock, hot swappable batteries which can charge in the base station, and an OLED screen.</p><p>Aesthetically, I'm not very keen on the grey-and-white combo, but the black version looks lovely. It also reaches up to 1K polling on PC, which is fine by my books for a controller, but is a little behind some of the recent 8K competition.</p><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="NozXePbbYYVpvooiFphP6i" name="image - 2026-09-08T123826.423" alt="Two SteelSeries Aeon Pro controllers, one in black, one in white." src="https://cdn.mos.cms.futurecdn.net/NozXePbbYYVpvooiFphP6i.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: SteelSeries)</span></figcaption></figure><p>All of this would be fine if it wasn't for that price tag, which does put a pretty big dampener on things. Our James recently reviewed the <a href="https://www.pcgamer.com/hardware/controllers/scuf-omega-review/" target="_blank">$220 Scuf Omega</a> and found it difficult to justify for that price tag given the competition in the likes of the $220 <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Raiju V3 Pro</a>, the $200 <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro</a>, and the $90 <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a>.</p><p>I'd have to spend more time with it to know for sure, but I worry the SteelSeries will face the same fate by pricing itself so high, especially without 8K polling. Though for those who use both Xbox and PC, some might consider it worth the cost for that dual connectivity feature alone, though given pairing isn't the most difficult thing in the world, even then I'm not so sure.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Scuf Omega review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Scuf Omega" data-widget-title=""></div><p>In recent years, Scuf controllers have lost some of their purpose to me. I distinctly remember wanting a Scuf controller to play Call of Duty as a teenager, as they were one of the only brands making solid pro controllers with distinct visuals and partnership deals with pro players. </p><p>Now, you can get a pro controller from most major gaming brands, like Asus, Turtle Beach, and Razer, and you can even get cheaper pro controllers from the likes of GameSir. </p><p>As such, it's no longer good enough to just offer a few extra buttons; you need to do something truly unique… or truly affordable. </p><p>The Scuf Omega attempts the former and gets no way near the latter. Its central selling point is dual compatibility with PC and PlayStation, plus some extra triggers on the grips. But things have changed in recent years, and it needs strong build quality, great feel, and a host of other features to really justify that price. </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 want a PS5 controller built for PC: </strong>The Scuf Omega is the closest I've felt to Sony's DualSense not made by Sony. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Do not buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌<strong> You won't use it on PS5:</strong> If you simply want a PC pro controller, there are much stronger choices from Scuf's competition. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Scuf Omega Pro Specs</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p>Scuf Omega specs</p></td></tr><tr><td class="firstcol " ><p>Layout</p></td><td  ><p>Symmetrical</p></td></tr><tr><td class="firstcol " ><p>Thumbsticks </p></td><td  ><p>TMR</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wired and wireless (Bluetooth or 2.4 GHz), PC and PlayStation 5</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>17 hours</p></td></tr><tr><td class="firstcol " ><p>Polling Rate</p></td><td  ><p>Up to 1,000 Hz (250 Hz on PS5)</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>254 g</p></td></tr><tr><td class="firstcol " ><p>Price</p></td><td  ><p><a href="https://www.scufgaming.com/uk/en/c/ps5/omega?srsltid=AfmBOopF2Hvr5fc--brD-a5MUzYvT8OmbEjkPIaCmOU7wEd4jY4cQK3S" target="_blank">$220</a> | £210 </p></td></tr></tbody></table></div><p>Perhaps the most notable thing about the Scuf Omega is the fact that it's sort of a Sony DualSense controller. Being officially licensed by Sony, it has a PlayStation button slapped on the front of it, and its curved sides, shape, and touchpad are all reminiscent of Sony's pad. Triggers and buttons sound different, but in the hand, it feels very familiar. Well, except for the five buttons down the bottom, the two buttons on the sides of the controller, and four paddles on the back. Oh, and also you can take the faceplate off. Okay, maybe it's closer to the DualSense Edge, actually. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAhnUzAHa9djmofFifqixJ" name="IMG_0447" alt="Scuf Omega controller outside from the bottom right" src="https://cdn.mos.cms.futurecdn.net/cAhnUzAHa9djmofFifqixJ.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With the Scuf Omega, you also get most of the modern trappings of a pro controller. TMR sticks? It's got 'em. Extra buttons? You betcha. 8,000 Hz polling? Well, no. The Omega only goes up to 1,000 Hz on PC, and is locked to 250 Hz on PS5.</p><p>It's true that the average gamer does not need 8,000 Hz polling, as reaction time isn't great enough to actually justify it. That goes doubly so for wireless devices, which will see a reduced battery life the higher the polling rate goes. It's also true, though, that when you are paying up to $200 for a controller, you should probably expect competitive-level specs. </p><p>And that's strange, as all the extra buttons are intended for a more hardcore audience. If you can click buttons more efficiently, you can click them quicker. So, in some ways, it feels like a competitive device, and in others it doesn't. </p><p>Scuf has kitted the Omega with Omron mechanical switches, which allow for snappier, more responsive controls, and it has five 'G-keys' at the bottom of the controller that can be customised to do whatever control you like. </p><p>With around 15-20 hours of battery life, the Omega is better than Sony's offerings but offers less than the pro controllers from Razer and GameSir. </p><p>In the box, you get the controller's 2.4 GHz connector, a carry case, a 6 ft braided cable, plus three extra thumbsticks and blanking plates to replace the inner paddles and side buttons. That means the Omega can look like a relatively standard controller with some light tweaking. </p><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wDwaX2pG8cLfLQwqJG3kvJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cC9hTxqi3JKZh9KCJmsmuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HofVpHZGGbooXgSsncUurJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I really quite like the Scuf Omega in the hands. It's light, comfortable, and its buttons are easy to press. It's the closest I've ever seen a competitor get to Sony's pads in size and feel, and that's not a bad thing. If it weren't for the DualSense's habit of getting stick drift, I'd use them much more than I do now. </p><p>I spent a few weeks trying to get the most out of all the Omega's buttons, and I give myself a pass on that test. The buttons on the side default to the bumpers. This control scheme means you can keep your fingers on the bumpers indefinitely and control both by squeezing on the controller. </p><p>In this position, I struggle to get purchase on the controller to hit the very bottom paddles. The side triggers didn't make their way into my regular rotation, but I did find myself using the bottom four buttons for games like Fortnite, and even as a quick-fire parry button in <a href="https://www.pcgamer.com/games/action/resonance-a-plague-tale-legacy-review/" target="_blank">Resonance: A Plague Tale Legacy</a>. </p><p>The problem with having so many buttons is I could never quite find a way to hold the controller where I could comfortably hit them all. But then again, there are so many buttons that you can afford to miss some and have backups in other places. It requires a little fine-tuning and customising, but I did find myself to be a tad quicker on the Omega than a traditional controller without any spare buttons. </p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E8wW6WhRVumc7yZfewmNzJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Sony locks polling down to 250 Hz for non-official controllers on PS5, so that's the max there, but the 1,000 Hz polling feels like a noticeable miss on PC, given many high-end gamepads have now stepped things up to 8K. The controller has competitive intent with all those buttons, but you can find other options like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> offering the same polling, plus stick drift-resistant sticks, and it even comes with a charging dock, too. The battery life on the Omega is okay for a controller, but a smart charging system would fit it much better. </p><p>As well as this, it has dual connectivity with Sony and PC, but only comes with one connector. The likes of the <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-700-gen-3-review/" target="_blank">Turtle Beach Stealth 700 Gen 3</a> and <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-pro-ii-review/" target="_blank">Stealth Pro II</a> come with two connectors to seamlessly swap between devices, and I wish Scuf went in the same direction here. You also swap connections by taking the faceplate off, which adds even more time to the process. </p><p>Buttons do feel smooth under the fingers, though; the D-pad is well defined and clicky, while the triggers feel snappy and consistent in both the linear and long-press mode. Scuf's Omicron mouse-like switches make snappy shooting in the likes of Fortnite super easy, and the TMR thumbsticks are easy to use. </p><p>I played the entirety of <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/" target="_blank">Onimusha: Way of the Sword</a> on the Scuf Omega, and the abundance of buttons plus the comfortable feel made parrying, attacking, and running a breeze. </p><h2 class="article-body__section" id="section-build-quality"><span>Build quality </span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sum7xrxvsJM7qPp3pg93vJ" name="IMG_0451" alt="Scuf Omega controller outside, with its faceplate off" src="https://cdn.mos.cms.futurecdn.net/sum7xrxvsJM7qPp3pg93vJ.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Though I'm not afraid of breaking the controller if I squeeze it too hard, I do find this gamepad to be notably behind Razer's pro controller offerings in its firmness. It just doesn't have the same strength of materials. It also has a light rattle if I shake it. Admittedly, I don't spend much time shaking controllers, but it contributes to the controller feeling a little cheaper than its competitors. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ.jpg" alt="Scuf Omega controller outside from the bottom, in a hand" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pn34ws9rKYEDhZmeYb4JuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tJph77DF6uhiq3PPZ8MUwJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hdzXPpyRY2cvqsMBwreeuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qCw4wFsnkS3nQwkv2YyTpJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YynK4gXkteyVdZUZwBHVkJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Scuf Omega I've been testing is the Smoke model, and apart from the RGB strip down the bottom, it's pretty understated. There's a block pattern on the touchpad, and some light branding on the grips, but nothing too loud, especially when considering the <a href="https://www.scufgaming.com/uk/en/p/scuf-omega-respawn" target="_blank">other Omega options</a>. And, in fairness, the RGB serves a purpose here. The five buttons at the bottom are a mute button, a volume up and down button, and two customizable keys, so the RGB lighting helps signal which button is which. </p><p>The Smoke model is like a cross between black and grey. It's semi-transparent so you can kind of make out the internals, but it's not so transparent that it's reminiscent of the see-through console trend that was popular in the 2000s. </p><p>There's no hiding the mass of extra buttons on the controller, but Scuf has done a decent job blending them into the natural shape of it. The only part that feels odd is the two most central paddles on the back of the controller. I do quite like that you can take off the faceplate, meaning you could feasibly replace it, but there are no Omega faceplates on the Scuf store as of the time of writing. </p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qCSTFKQC87aYGJAFy8iu7J" name="C (66)" alt="Screenshots from the Scuf Omega app, showing how to customize buttons" src="https://cdn.mos.cms.futurecdn.net/qCSTFKQC87aYGJAFy8iu7J.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: Scuf)</span></figcaption></figure><p>Scuf's software situation has always been a bit confusing to me. It does have software, but only software you can customise on its mobile phone app. So, if you want to toggle something for it while playing on your PC, you have to take your phone out and customise it from there. </p><p>The app lets you customise brightness, change polling rate, set SOCD, update firmware, and adjust calibration. The app itself works really well. It pairs your phone to your controller very quickly, is intuitive to use, and didn't falter during my time with it. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><p>The Scuf Omega is a mighty tough sell. If you specifically want a PC and PS5 pro controller, the Razer Raiju V3 Pro is the same price, offers stronger build quality, and a higher polling rate on PC. The Omega does have two buttons on the side, and five extra on the bottom that the Raiju doesn't, but my grubby mitts would be reaching for the textured grips of the Raiju instead. </p><p>Then, if you simply want a strong pro controller with extra buttons, I'd be picking the Wolverine V3 Pro and its 8,000 Hz polling rate for the lower price of $200. </p><p>Finally, if you simply want something well built with a few extra buttons, I'd go significantly cheaper and pick up either the GameSir G7 Pro or <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a> for $70 and $80 respectively. These two GameSir picks also include a charging dock. </p><p>At 70% of its current cost, Scuf could have been on to a real winner here, but it's simply too expensive for a good but not great pad. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/scuf-omega-review/</link>
                                                                            <description>
                            <![CDATA[ Closer to an Alpha or Beta than an Omega. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8NKgZmo3fxQQhxjqHrn2AB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PfiU4gZmnbsVoGaYsi3iY8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 07 Sep 2026 15:02:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PfiU4gZmnbsVoGaYsi3iY8-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Scuf Omega controller outside in a hand]]></media:description>                                                            <media:text><![CDATA[Scuf Omega controller outside in a hand]]></media:text>
                                <media:title type="plain"><![CDATA[Scuf Omega controller outside in a hand]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PfiU4gZmnbsVoGaYsi3iY8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Scuf Omega" data-widget-title=""></div><p>In recent years, Scuf controllers have lost some of their purpose to me. I distinctly remember wanting a Scuf controller to play Call of Duty as a teenager, as they were one of the only brands making solid pro controllers with distinct visuals and partnership deals with pro players. </p><p>Now, you can get a pro controller from most major gaming brands, like Asus, Turtle Beach, and Razer, and you can even get cheaper pro controllers from the likes of GameSir. </p><p>As such, it's no longer good enough to just offer a few extra buttons; you need to do something truly unique… or truly affordable. </p><p>The Scuf Omega attempts the former and gets no way near the latter. Its central selling point is dual compatibility with PC and PlayStation, plus some extra triggers on the grips. But things have changed in recent years, and it needs strong build quality, great feel, and a host of other features to really justify that price. </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 want a PS5 controller built for PC: </strong>The Scuf Omega is the closest I've felt to Sony's DualSense not made by Sony. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Do not buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌<strong> You won't use it on PS5:</strong> If you simply want a PC pro controller, there are much stronger choices from Scuf's competition. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Scuf Omega Pro Specs</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p>Scuf Omega specs</p></td></tr><tr><td class="firstcol " ><p>Layout</p></td><td  ><p>Symmetrical</p></td></tr><tr><td class="firstcol " ><p>Thumbsticks </p></td><td  ><p>TMR</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wired and wireless (Bluetooth or 2.4 GHz), PC and PlayStation 5</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>17 hours</p></td></tr><tr><td class="firstcol " ><p>Polling Rate</p></td><td  ><p>Up to 1,000 Hz (250 Hz on PS5)</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>254 g</p></td></tr><tr><td class="firstcol " ><p>Price</p></td><td  ><p><a href="https://www.scufgaming.com/uk/en/c/ps5/omega?srsltid=AfmBOopF2Hvr5fc--brD-a5MUzYvT8OmbEjkPIaCmOU7wEd4jY4cQK3S" target="_blank">$220</a> | £210 </p></td></tr></tbody></table></div><p>Perhaps the most notable thing about the Scuf Omega is the fact that it's sort of a Sony DualSense controller. Being officially licensed by Sony, it has a PlayStation button slapped on the front of it, and its curved sides, shape, and touchpad are all reminiscent of Sony's pad. Triggers and buttons sound different, but in the hand, it feels very familiar. Well, except for the five buttons down the bottom, the two buttons on the sides of the controller, and four paddles on the back. Oh, and also you can take the faceplate off. Okay, maybe it's closer to the DualSense Edge, actually. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAhnUzAHa9djmofFifqixJ" name="IMG_0447" alt="Scuf Omega controller outside from the bottom right" src="https://cdn.mos.cms.futurecdn.net/cAhnUzAHa9djmofFifqixJ.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With the Scuf Omega, you also get most of the modern trappings of a pro controller. TMR sticks? It's got 'em. Extra buttons? You betcha. 8,000 Hz polling? Well, no. The Omega only goes up to 1,000 Hz on PC, and is locked to 250 Hz on PS5.</p><p>It's true that the average gamer does not need 8,000 Hz polling, as reaction time isn't great enough to actually justify it. That goes doubly so for wireless devices, which will see a reduced battery life the higher the polling rate goes. It's also true, though, that when you are paying up to $200 for a controller, you should probably expect competitive-level specs. </p><p>And that's strange, as all the extra buttons are intended for a more hardcore audience. If you can click buttons more efficiently, you can click them quicker. So, in some ways, it feels like a competitive device, and in others it doesn't. </p><p>Scuf has kitted the Omega with Omron mechanical switches, which allow for snappier, more responsive controls, and it has five 'G-keys' at the bottom of the controller that can be customised to do whatever control you like. </p><p>With around 15-20 hours of battery life, the Omega is better than Sony's offerings but offers less than the pro controllers from Razer and GameSir. </p><p>In the box, you get the controller's 2.4 GHz connector, a carry case, a 6 ft braided cable, plus three extra thumbsticks and blanking plates to replace the inner paddles and side buttons. That means the Omega can look like a relatively standard controller with some light tweaking. </p><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wDwaX2pG8cLfLQwqJG3kvJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cC9hTxqi3JKZh9KCJmsmuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HofVpHZGGbooXgSsncUurJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I really quite like the Scuf Omega in the hands. It's light, comfortable, and its buttons are easy to press. It's the closest I've ever seen a competitor get to Sony's pads in size and feel, and that's not a bad thing. If it weren't for the DualSense's habit of getting stick drift, I'd use them much more than I do now. </p><p>I spent a few weeks trying to get the most out of all the Omega's buttons, and I give myself a pass on that test. The buttons on the side default to the bumpers. This control scheme means you can keep your fingers on the bumpers indefinitely and control both by squeezing on the controller. </p><p>In this position, I struggle to get purchase on the controller to hit the very bottom paddles. The side triggers didn't make their way into my regular rotation, but I did find myself using the bottom four buttons for games like Fortnite, and even as a quick-fire parry button in <a href="https://www.pcgamer.com/games/action/resonance-a-plague-tale-legacy-review/" target="_blank">Resonance: A Plague Tale Legacy</a>. </p><p>The problem with having so many buttons is I could never quite find a way to hold the controller where I could comfortably hit them all. But then again, there are so many buttons that you can afford to miss some and have backups in other places. It requires a little fine-tuning and customising, but I did find myself to be a tad quicker on the Omega than a traditional controller without any spare buttons. </p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E8wW6WhRVumc7yZfewmNzJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Sony locks polling down to 250 Hz for non-official controllers on PS5, so that's the max there, but the 1,000 Hz polling feels like a noticeable miss on PC, given many high-end gamepads have now stepped things up to 8K. The controller has competitive intent with all those buttons, but you can find other options like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> offering the same polling, plus stick drift-resistant sticks, and it even comes with a charging dock, too. The battery life on the Omega is okay for a controller, but a smart charging system would fit it much better. </p><p>As well as this, it has dual connectivity with Sony and PC, but only comes with one connector. The likes of the <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-700-gen-3-review/" target="_blank">Turtle Beach Stealth 700 Gen 3</a> and <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-pro-ii-review/" target="_blank">Stealth Pro II</a> come with two connectors to seamlessly swap between devices, and I wish Scuf went in the same direction here. You also swap connections by taking the faceplate off, which adds even more time to the process. </p><p>Buttons do feel smooth under the fingers, though; the D-pad is well defined and clicky, while the triggers feel snappy and consistent in both the linear and long-press mode. Scuf's Omicron mouse-like switches make snappy shooting in the likes of Fortnite super easy, and the TMR thumbsticks are easy to use. </p><p>I played the entirety of <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/" target="_blank">Onimusha: Way of the Sword</a> on the Scuf Omega, and the abundance of buttons plus the comfortable feel made parrying, attacking, and running a breeze. </p><h2 class="article-body__section" id="section-build-quality"><span>Build quality </span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sum7xrxvsJM7qPp3pg93vJ" name="IMG_0451" alt="Scuf Omega controller outside, with its faceplate off" src="https://cdn.mos.cms.futurecdn.net/sum7xrxvsJM7qPp3pg93vJ.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Though I'm not afraid of breaking the controller if I squeeze it too hard, I do find this gamepad to be notably behind Razer's pro controller offerings in its firmness. It just doesn't have the same strength of materials. It also has a light rattle if I shake it. Admittedly, I don't spend much time shaking controllers, but it contributes to the controller feeling a little cheaper than its competitors. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ.jpg" alt="Scuf Omega controller outside from the bottom, in a hand" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pn34ws9rKYEDhZmeYb4JuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tJph77DF6uhiq3PPZ8MUwJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hdzXPpyRY2cvqsMBwreeuJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qCw4wFsnkS3nQwkv2YyTpJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YynK4gXkteyVdZUZwBHVkJ.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Scuf Omega I've been testing is the Smoke model, and apart from the RGB strip down the bottom, it's pretty understated. There's a block pattern on the touchpad, and some light branding on the grips, but nothing too loud, especially when considering the <a href="https://www.scufgaming.com/uk/en/p/scuf-omega-respawn" target="_blank">other Omega options</a>. And, in fairness, the RGB serves a purpose here. The five buttons at the bottom are a mute button, a volume up and down button, and two customizable keys, so the RGB lighting helps signal which button is which. </p><p>The Smoke model is like a cross between black and grey. It's semi-transparent so you can kind of make out the internals, but it's not so transparent that it's reminiscent of the see-through console trend that was popular in the 2000s. </p><p>There's no hiding the mass of extra buttons on the controller, but Scuf has done a decent job blending them into the natural shape of it. The only part that feels odd is the two most central paddles on the back of the controller. I do quite like that you can take off the faceplate, meaning you could feasibly replace it, but there are no Omega faceplates on the Scuf store as of the time of writing. </p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qCSTFKQC87aYGJAFy8iu7J" name="C (66)" alt="Screenshots from the Scuf Omega app, showing how to customize buttons" src="https://cdn.mos.cms.futurecdn.net/qCSTFKQC87aYGJAFy8iu7J.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: Scuf)</span></figcaption></figure><p>Scuf's software situation has always been a bit confusing to me. It does have software, but only software you can customise on its mobile phone app. So, if you want to toggle something for it while playing on your PC, you have to take your phone out and customise it from there. </p><p>The app lets you customise brightness, change polling rate, set SOCD, update firmware, and adjust calibration. The app itself works really well. It pairs your phone to your controller very quickly, is intuitive to use, and didn't falter during my time with it. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><p>The Scuf Omega is a mighty tough sell. If you specifically want a PC and PS5 pro controller, the Razer Raiju V3 Pro is the same price, offers stronger build quality, and a higher polling rate on PC. The Omega does have two buttons on the side, and five extra on the bottom that the Raiju doesn't, but my grubby mitts would be reaching for the textured grips of the Raiju instead. </p><p>Then, if you simply want a strong pro controller with extra buttons, I'd be picking the Wolverine V3 Pro and its 8,000 Hz polling rate for the lower price of $200. </p><p>Finally, if you simply want something well built with a few extra buttons, I'd go significantly cheaper and pick up either the GameSir G7 Pro or <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a> for $70 and $80 respectively. These two GameSir picks also include a charging dock. </p><p>At 70% of its current cost, Scuf could have been on to a real winner here, but it's simply too expensive for a good but not great pad. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The best wired PC controller has been knocked down to $77—so long as you don't mind it in white ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:618px;"><p class="vanilla-image-block" style="padding-top:99.84%;"><img id="vgsaXpAMZKbxs9u6HUFV2W" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W.png" mos="" align="middle" fullscreen="" width="618" height="617" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This controller is comfy, responsive, and all its various buttons, sticks, and triggers feel very high-quality. There's little to dislike about the Valor Pro unless you really don't want to keep that cable. This is a great price for a Scuf controller, too.</p><p><strong>Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow" data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99">View Deal</a></p></div><p>Even though wireless PC gaming peripherals are commonplace now, I'm still battling wires. A wireless controller is great… right up until it needs to be plugged in to charge. Crowded 2.4 GHz wireless bands and latency issues don't help. Well, to heck with it—is a fully wired controller really so bad, then?</p><p>The wired version of the Scuf Valor Pro far exceeds 'not all that bad'; it's simply the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best wired PC controller</a> we've ever tested. I'll get into what makes it better than all the rest shortly, but the thing to highlight right now is that it's currently down to its lowest ever price. So long as you don't mind picking up the white colourway, you can get the Scuf Valor Pro wired performance Xbox controller<a href="https://www.amazon.com/dp/B0DTB3QCS5?th=1" target="_blank"> for only $77 from Amazon</a>.</p><p>$33 off is nothing to sneeze at, especially as the Scuf Valor Pro doesn't skimp on either premium features or feel. Our Jacob was pretty smitten in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro review</a>, writing, "The Valor Pro is very high-quality, from its mechanical buttons to its Hall effect thumbsticks and satisfyingly clacky back paddles, not to mention its sheer versatility thanks to trigger mode toggles, back paddle profiles, and modular thumbsticks."</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>That said, he also thought the controller's stated target audience, the 'aspiring esports pro' crowd, was an awkward pitch. He writes, "In the land of PCs, controllers are rarely used for pro gaming. In racing, sports, and fighting games, sure, but those are a few very specific esports genres and many gamers in the latter often prefer arcade fight sticks to controllers anyway."</p><p>And while he has a point, I'd like to offer a counter: myself, the console gaming interloper. Having spent many years writing about all things PlayStation earlier in my career, I'm simply more comfortable with a gamepad, even on PC. The textured grips and premium materials of the wired Scuf Valor Pro calls to my tiny mitts. The clickyness of the buttons and sticks are a siren song to my button-mashing self. Besides, it's not just the pros that can enjoy pro features.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mL4beaA4oAUvKfHcYPge9a.jpg" alt="Scuf Valor Pro wired controller packaging" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hWc8FWZ6pemQdQj2izoH7a.jpg" alt="Scuf Valor Pro wired controller in-package" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Part of this premium package includes extra buttons on the gamepad's underside. I'm not usually a fan, but the ones on the Scuf Valor Pro have certainly made a far more positive impression. </p><p>Jacob likes them too, writing, "I was immediately enamoured with the Scuf paddles' quality, design, and placement. My middle fingers fall into place effortlessly and can press down on the primary paddles or move upwards/inwards a little to press the secondary paddle buttons—an ingenious design that just works. And not only does it work, but it works with the help of some seriously satisfying clicks."</p><p>Now, as lovely as that all is, an MSRP of $100 was a big ask for a wired controller. Thankfully, a 30% discount at Amazon makes it much easier to say 'heck yes!'</p><h2 id="check-out-the-rest-of-amazon-s-pc-controller-deals">👉 <a href="https://www.amazon.com/b?node=402045011&ref=sr_nr_n_1" target="_blank">Check out the rest of Amazon's PC controller deals</a> 👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-best-wired-pc-controller-has-been-knocked-down-to-usd77-so-long-as-you-dont-mind-it-in-white/</link>
                                                                            <description>
                            <![CDATA[ Wires? Why Not? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">A97h9Ug45WeF5xPLdcoJyf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ak7PURqcLxs5WzGrdR3cPW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 04 Sep 2026 11:57:42 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ak7PURqcLxs5WzGrdR3cPW-1280-80.jpg">
                                                            <media:credit><![CDATA[Scuf]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The wired version of the Scuf Valor Pro is seen in white, from the front and the back. They both float in the funky PCG deals void.]]></media:description>                                                            <media:text><![CDATA[The wired version of the Scuf Valor Pro is seen in white, from the front and the back. They both float in the funky PCG deals void.]]></media:text>
                                <media:title type="plain"><![CDATA[The wired version of the Scuf Valor Pro is seen in white, from the front and the back. They both float in the funky PCG deals void.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ak7PURqcLxs5WzGrdR3cPW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:618px;"><p class="vanilla-image-block" style="padding-top:99.84%;"><img id="vgsaXpAMZKbxs9u6HUFV2W" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W.png" mos="" align="middle" fullscreen="" width="618" height="617" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This controller is comfy, responsive, and all its various buttons, sticks, and triggers feel very high-quality. There's little to dislike about the Valor Pro unless you really don't want to keep that cable. This is a great price for a Scuf controller, too.</p><p><strong>Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow" data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99">View Deal</a></p></div><p>Even though wireless PC gaming peripherals are commonplace now, I'm still battling wires. A wireless controller is great… right up until it needs to be plugged in to charge. Crowded 2.4 GHz wireless bands and latency issues don't help. Well, to heck with it—is a fully wired controller really so bad, then?</p><p>The wired version of the Scuf Valor Pro far exceeds 'not all that bad'; it's simply the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best wired PC controller</a> we've ever tested. I'll get into what makes it better than all the rest shortly, but the thing to highlight right now is that it's currently down to its lowest ever price. So long as you don't mind picking up the white colourway, you can get the Scuf Valor Pro wired performance Xbox controller<a href="https://www.amazon.com/dp/B0DTB3QCS5?th=1" target="_blank"> for only $77 from Amazon</a>.</p><p>$33 off is nothing to sneeze at, especially as the Scuf Valor Pro doesn't skimp on either premium features or feel. Our Jacob was pretty smitten in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro review</a>, writing, "The Valor Pro is very high-quality, from its mechanical buttons to its Hall effect thumbsticks and satisfyingly clacky back paddles, not to mention its sheer versatility thanks to trigger mode toggles, back paddle profiles, and modular thumbsticks."</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>That said, he also thought the controller's stated target audience, the 'aspiring esports pro' crowd, was an awkward pitch. He writes, "In the land of PCs, controllers are rarely used for pro gaming. In racing, sports, and fighting games, sure, but those are a few very specific esports genres and many gamers in the latter often prefer arcade fight sticks to controllers anyway."</p><p>And while he has a point, I'd like to offer a counter: myself, the console gaming interloper. Having spent many years writing about all things PlayStation earlier in my career, I'm simply more comfortable with a gamepad, even on PC. The textured grips and premium materials of the wired Scuf Valor Pro calls to my tiny mitts. The clickyness of the buttons and sticks are a siren song to my button-mashing self. Besides, it's not just the pros that can enjoy pro features.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mL4beaA4oAUvKfHcYPge9a.jpg" alt="Scuf Valor Pro wired controller packaging" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hWc8FWZ6pemQdQj2izoH7a.jpg" alt="Scuf Valor Pro wired controller in-package" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Part of this premium package includes extra buttons on the gamepad's underside. I'm not usually a fan, but the ones on the Scuf Valor Pro have certainly made a far more positive impression. </p><p>Jacob likes them too, writing, "I was immediately enamoured with the Scuf paddles' quality, design, and placement. My middle fingers fall into place effortlessly and can press down on the primary paddles or move upwards/inwards a little to press the secondary paddle buttons—an ingenious design that just works. And not only does it work, but it works with the help of some seriously satisfying clicks."</p><p>Now, as lovely as that all is, an MSRP of $100 was a big ask for a wired controller. Thankfully, a 30% discount at Amazon makes it much easier to say 'heck yes!'</p><h2 id="check-out-the-rest-of-amazon-s-pc-controller-deals">👉 <a href="https://www.amazon.com/b?node=402045011&ref=sr_nr_n_1" target="_blank">Check out the rest of Amazon's PC controller deals</a> 👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Someone has managed to run Zork on the Steam Controller's internal hardware, but it's risky business ]]></title>
                                                                                                <dc:content><![CDATA[ <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/M5XUR8Fnjf4" allowfullscreen></iframe></div></div><p>As we've reported on many times over the years, Valve's hardware efforts attract the attention of the DIY project community like no other. The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is no exception, as creator Owen Feldman has managed to get classic text adventure <a href="https://www.pcgamer.com/games/classic-text-adventure-zork-is-going-open-source-but-im-side-eyeing-microsofts-announcement-about-it-hard/" target="_blank">Zork</a> running on its internal hardware.</p><p>Feldman has documented the project <a href="https://owenfeldman.com/Reverse%20Engineering/Steam%20Controller%202026/" target="_blank">on their blog</a>, but it wasn't always a smooth ride to convince the controller to play ball (via <a href="https://hackaday.com/2026/08/20/running-zork-on-the-steam-controller/" target="_blank">Hackaday</a>). An internal tool discovered within a Steam hardware updater folder was used to flash the firmware—but Feldman managed to <a href="https://github.com/safijari/openpuck/discussions/185#discussioncomment-17733791" target="_blank">temporarily brick their controller</a> in the process.</p><p>After recovering the controller, a custom Rust-based program was used to emulate an Intel 8080 CPU and run the <a href="https://en.wikipedia.org/wiki/CP/M" target="_blank">CP/M-80</a> operating system on the Steam Controller's internal processor. As the device has no keyboard or screen, the built-in USB connection was used for I/O streaming purposes.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>So, what do you do first when you've successfully convinced a controller to emulate a CPU and run an OS all on its own? Well, you play games on it, of course. </p><p>A floppy disk (hey, remember those?) copy of Zork was used to load the game via an external drive, resulting in a Steam Controller rig that's been connected to a remarkable number of add-on devices. I doubt it knows exactly what hit 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: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>Still, the end result looks like a very playable experience. Feldman describes the process of creating the custom program as "1514 lines of pain," but what they've ended up with is the PC hardware equivalent of a magic trick. Who knew the Steam Controller could play games in its own right?</p><p>However, I think I'll be leaving this Steam Controller-flashing method well alone, and not just because my Rust coding abilities are non-existent. Feldman warns that bricking your device through the flashing process is a real possibility, and given that it's <a href="https://store.steampowered.com/hardware/steamcontroller" target="_blank">a $99 piece of kit</a>, perhaps it's better to leave this one to the braver hardware hackers among us.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/someone-has-managed-to-run-zork-on-the-steam-controllers-internal-hardware-but-its-risky-business/</link>
                                                                            <description>
                            <![CDATA[ And not the Tom Cruise kind, either. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">B4RJ9RxD2s24Pa7RTCRbWh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 21 Aug 2026 13:24:53 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                <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/M5XUR8Fnjf4" allowfullscreen></iframe></div></div><p>As we've reported on many times over the years, Valve's hardware efforts attract the attention of the DIY project community like no other. The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is no exception, as creator Owen Feldman has managed to get classic text adventure <a href="https://www.pcgamer.com/games/classic-text-adventure-zork-is-going-open-source-but-im-side-eyeing-microsofts-announcement-about-it-hard/" target="_blank">Zork</a> running on its internal hardware.</p><p>Feldman has documented the project <a href="https://owenfeldman.com/Reverse%20Engineering/Steam%20Controller%202026/" target="_blank">on their blog</a>, but it wasn't always a smooth ride to convince the controller to play ball (via <a href="https://hackaday.com/2026/08/20/running-zork-on-the-steam-controller/" target="_blank">Hackaday</a>). An internal tool discovered within a Steam hardware updater folder was used to flash the firmware—but Feldman managed to <a href="https://github.com/safijari/openpuck/discussions/185#discussioncomment-17733791" target="_blank">temporarily brick their controller</a> in the process.</p><p>After recovering the controller, a custom Rust-based program was used to emulate an Intel 8080 CPU and run the <a href="https://en.wikipedia.org/wiki/CP/M" target="_blank">CP/M-80</a> operating system on the Steam Controller's internal processor. As the device has no keyboard or screen, the built-in USB connection was used for I/O streaming purposes.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>So, what do you do first when you've successfully convinced a controller to emulate a CPU and run an OS all on its own? Well, you play games on it, of course. </p><p>A floppy disk (hey, remember those?) copy of Zork was used to load the game via an external drive, resulting in a Steam Controller rig that's been connected to a remarkable number of add-on devices. I doubt it knows exactly what hit 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: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>Still, the end result looks like a very playable experience. Feldman describes the process of creating the custom program as "1514 lines of pain," but what they've ended up with is the PC hardware equivalent of a magic trick. Who knew the Steam Controller could play games in its own right?</p><p>However, I think I'll be leaving this Steam Controller-flashing method well alone, and not just because my Rust coding abilities are non-existent. Feldman warns that bricking your device through the flashing process is a real possibility, and given that it's <a href="https://store.steampowered.com/hardware/steamcontroller" target="_blank">a $99 piece of kit</a>, perhaps it's better to leave this one to the braver hardware hackers among us.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This wild new PC pro controller runs its own custom OS across a 2.79-inch color display slapped beneath the thumbsticks ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As $70-$100 controllers are only getting more and more impressive, you might be wondering what the pro controller market can do to make you spend that extra $100 or so. It turns out the answer might be to shove a screen on it. Ain't that always the way?</p><p>That's what you will find on the Genki Manta, a new controller live on <a href="https://www.kickstarter.com/projects/humanthings/manta?ref=76m7zg" target="_blank">Kickstarter</a>. It uses Manta OS, which is Genki's own operating system, and if you're wondering why a controller would even need an operating system, Genki notes that this allows on-the-fly fine-tuning without the need for any extra devices. You can customise its tri-stage triggers, adjust dead zones, change haptic feedback, and more via the onboard screen and OS.</p><p>And the controller is pretty impressive even outside the whole 'OS and built-in screen' thing. You get up to 8,000 Hz polling while wired (though only 1,000 Hz via 2.4 GHz wireless), a range of over 10 meters, 150 hours of battery via Bluetooth LE 6, as well as TMR joysticks and Hall effect triggers. The 16 MB of internal storage can be used to load apps onto Manta OS, and expandable storage might be offered as a stretch goal, according to Genki. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>Normally I'm pretty cynical about Kickstarter projects, but the LA-based Human Things and its range of Genki products have been successful on Kickstarter for some time. In fact, I got a Genki dock a couple of years ago and was impressed with the performance. That's not to say the Genki Manta will necessarily be the same quality, but the company has a history of successful kickstarters. </p><p>Genki says the Manta is "Beyond the Pro Controller" on its Kickstarter, and it has many of the features one would expect from a pro controller, like four paddles on the bottom and two extra buttons next to the bumpers. Naturally, all of these are remappable via the controller's software. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rGDYbQB9FG2zNN9LVvbeRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rrRonMrhRF2i6MgFuJFCRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>One thing that does intrigue me about the screen and OS combo is that the controller can swap to keyboard and mouse controls. It even has a toggle on the pad to swap between controller and keyboard mode. It's not yet clear if the display is a touch screen, or how Genki anticipates players using the controller to navigate a mouse.</p><p>Whether or not it can balance the screen and extra buttons in its 280-290 g (around the weight of the Xbox Series X controller) frame will be anyone's guess, and naturally that software will have to be very smooth to be worth the effort. I am, however, quite intrigued by the controller, and I'm still deciding if it's curiosity or morbid curiosity. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vHcDXpSF6j2joTxmhFjfRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UFbmiKo7LAfoTzRqRbXdRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2bEP9TzupCYQ7nvgmAkaRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cF7hdaN8kz9RbpZ4A66aRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>We don't yet have an estimated shipping date (assuming the Kickstarter is successful), but we do have a price point: $189 for the Super Early Bird pricer and $279 for the retail price. That is a lot of money, and 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> right now, 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>, is $200 at retail. The Wolverine also offers TMR thumbsticks and Hall effect triggers, though you are getting a superior 8,000 Hz polling via wireless, and we can guarantee the build quality of the Wolverine, as we've actually had it in our hands. </p><p>This is all before mentioning that you can get a controller for $70 (like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">Gamesir G7 Pro</a>) that competes with pro controllers in build quality and the featureset department. Even the more expensive <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">Gamesir G7 Pro 8K</a> (at $80) is a decent choice if you really want 8,000 Hz polling. </p><p>This is to say that, even with its own OS and a 2.79-inch screen, the Genki Manta has its work cut out for it. It's a big swing for a first controller, but we'll have to get our hands on it to see if it's actually worth that hefty asking price. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/this-wild-new-pc-pro-controller-runs-its-own-custom-os-across-a-2-79-inch-color-display-slapped-beneath-the-thumbsticks/</link>
                                                                            <description>
                            <![CDATA[ Genki says it is "Beyond the Pro Controller". ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tfzHN7mcvAMG9QUsXh6Xnh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/J5YuC5QH6SCd7YTEtjZfRA-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 20 Aug 2026 18:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/J5YuC5QH6SCd7YTEtjZfRA-1280-80.jpg">
                                                            <media:credit><![CDATA[Genki]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Genki&#039;s new controller about to go live on Kickstarter with a screen in the middle.]]></media:description>                                                            <media:text><![CDATA[Genki&#039;s new controller about to go live on Kickstarter with a screen in the middle.]]></media:text>
                                <media:title type="plain"><![CDATA[Genki&#039;s new controller about to go live on Kickstarter with a screen in the middle.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/J5YuC5QH6SCd7YTEtjZfRA-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As $70-$100 controllers are only getting more and more impressive, you might be wondering what the pro controller market can do to make you spend that extra $100 or so. It turns out the answer might be to shove a screen on it. Ain't that always the way?</p><p>That's what you will find on the Genki Manta, a new controller live on <a href="https://www.kickstarter.com/projects/humanthings/manta?ref=76m7zg" target="_blank">Kickstarter</a>. It uses Manta OS, which is Genki's own operating system, and if you're wondering why a controller would even need an operating system, Genki notes that this allows on-the-fly fine-tuning without the need for any extra devices. You can customise its tri-stage triggers, adjust dead zones, change haptic feedback, and more via the onboard screen and OS.</p><p>And the controller is pretty impressive even outside the whole 'OS and built-in screen' thing. You get up to 8,000 Hz polling while wired (though only 1,000 Hz via 2.4 GHz wireless), a range of over 10 meters, 150 hours of battery via Bluetooth LE 6, as well as TMR joysticks and Hall effect triggers. The 16 MB of internal storage can be used to load apps onto Manta OS, and expandable storage might be offered as a stretch goal, according to Genki. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>Normally I'm pretty cynical about Kickstarter projects, but the LA-based Human Things and its range of Genki products have been successful on Kickstarter for some time. In fact, I got a Genki dock a couple of years ago and was impressed with the performance. That's not to say the Genki Manta will necessarily be the same quality, but the company has a history of successful kickstarters. </p><p>Genki says the Manta is "Beyond the Pro Controller" on its Kickstarter, and it has many of the features one would expect from a pro controller, like four paddles on the bottom and two extra buttons next to the bumpers. Naturally, all of these are remappable via the controller's software. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rGDYbQB9FG2zNN9LVvbeRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rrRonMrhRF2i6MgFuJFCRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>One thing that does intrigue me about the screen and OS combo is that the controller can swap to keyboard and mouse controls. It even has a toggle on the pad to swap between controller and keyboard mode. It's not yet clear if the display is a touch screen, or how Genki anticipates players using the controller to navigate a mouse.</p><p>Whether or not it can balance the screen and extra buttons in its 280-290 g (around the weight of the Xbox Series X controller) frame will be anyone's guess, and naturally that software will have to be very smooth to be worth the effort. I am, however, quite intrigued by the controller, and I'm still deciding if it's curiosity or morbid curiosity. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vHcDXpSF6j2joTxmhFjfRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UFbmiKo7LAfoTzRqRbXdRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2bEP9TzupCYQ7nvgmAkaRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cF7hdaN8kz9RbpZ4A66aRA.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>We don't yet have an estimated shipping date (assuming the Kickstarter is successful), but we do have a price point: $189 for the Super Early Bird pricer and $279 for the retail price. That is a lot of money, and 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> right now, 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>, is $200 at retail. The Wolverine also offers TMR thumbsticks and Hall effect triggers, though you are getting a superior 8,000 Hz polling via wireless, and we can guarantee the build quality of the Wolverine, as we've actually had it in our hands. </p><p>This is all before mentioning that you can get a controller for $70 (like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">Gamesir G7 Pro</a>) that competes with pro controllers in build quality and the featureset department. Even the more expensive <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">Gamesir G7 Pro 8K</a> (at $80) is a decent choice if you really want 8,000 Hz polling. </p><p>This is to say that, even with its own OS and a 2.79-inch screen, the Genki Manta has its work cut out for it. It's a big swing for a first controller, but we'll have to get our hands on it to see if it's actually worth that hefty asking price. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The latest Windows 11 update is borking some multiplayer games, but Arc Raiders' developer has a quick workaround ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If your games started unexpectedly crashing after getting a Windows update on or after August 11, you aren't alone. And Microsoft says it's looking into the problem. Microsoft <a href="https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-25h2#microsoft-has-received-reports-of-certain-games-becoming-unresponsive" target="_blank">reports </a>the following "symptoms" popped up for "a limited number of games":</p><ul><li>The game application becomes unresponsive</li><li>The game application closes without notice</li><li>The error "EXCEPTION_ACCESS_VIOLATION" is displayed</li><li>The device restarting without warning</li></ul><p>Microsoft has only confirmed crashes in Arc Raiders, Marvel Tōkon: Fighting Souls, and The Finals so far, but you can send feedback to Microsoft with the <a href="https://support.microsoft.com/help/4021566" target="_blank">Feedback Hub app</a> if you've also found a game crashing since the update.</p><p>Microsoft says it is investigating to see if the latest Windows update is responsible. As of right now, the only client versions that have reported crashes are 25H2 and 24H2, so 26H1 is currently in the clear.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>But Embark, the developer of Arc Raiders, claims on Discord that the “This is a crash related to the file inpoutx64.sys, which changed with the Windows update" (via <a href="https://www.windowslatest.com/2026/08/16/windows-11-kb5121003-is-triggering-game-crashes-and-causing-other-problems-on-some-pcs/" target="_blank">Windows Latest</a>). </p><p>If Embark is correct, it looks like you might have to wait until a future Windows update for this problem to be officially fixed. However, Embark notes that you can type ‘sc stop inpoutx64’ into Command Prompt, then type ‘sc delete inpoutx64’ and delete the inpoutx64.sys file from your drivers folder to fix the problem in the short term. We haven't personally tried this method as we haven't had any crashing issues, so do so at your own risk. </p><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="y6MkVCFTCJ5rv6AR98fvLS" name="C (35)" alt="A screenshot of the uninstall updates option in Windows 11" src="https://cdn.mos.cms.futurecdn.net/y6MkVCFTCJ5rv6AR98fvLS.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: Microsoft)</span></figcaption></figure><p>Update <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/08/kb5121003-windows-11-24h2-25h2-security-update" target="_blank">KB5121003</a>, which is said to be the update responsible for the crashes, contains over <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Aug" target="_blank">400 security updates</a>, although it's not clear yet if changes related to these fixes are responsible for the issues..</p><p>Some users have also reported graphical corruption problems after the latest Windows update. One user on <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/kb5121003_causing_severe_graphical_corruption/" target="_blank">Reddit</a> demonstrates problems in Valorant and Roblox using both a dedicated graphics card and an integrated graphics card. <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/comment/p4anm2g/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">Some users</a> report that uninstalling KB5121003 has fixed black screen problems.</p><p>If you have run into the problem and want to test rolling back your Windows version, you can do so by following the steps below:</p><ul><li>Search <strong>Windows Update</strong> on the Start tab</li><li>Click on <strong>Update history</strong></li><li>Scroll down and click <strong>Uninstall updates</strong></li><li>Uninstall update <strong>KB5120708</strong></li></ul><p>We don't yet have a timeline for when we can expect a patch, but uninstalling the latest update may be a good workaround until then. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-latest-windows-11-update-is-borking-some-multiplayer-games-but-arc-raiders-developer-has-a-quick-workaround/</link>
                                                                            <description>
                            <![CDATA[ If you've been affected, it might be worth rolling back your Windows version. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LZBHRicxUgEKPFN7SmAMS3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cfRFGsMSVs36ZLNFgKUbaU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 20 Aug 2026 11:00:04 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cfRFGsMSVs36ZLNFgKUbaU-1280-80.jpg">
                                                            <media:credit><![CDATA[Embark]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Arc Raiders: Key art featuring two raiders holding weapons and standing in the middle of the road, turning to run away from a large Queen spider-like robot on the buildings in the background.]]></media:description>                                                            <media:text><![CDATA[Arc Raiders: Key art featuring two raiders holding weapons and standing in the middle of the road, turning to run away from a large Queen spider-like robot on the buildings in the background.]]></media:text>
                                <media:title type="plain"><![CDATA[Arc Raiders: Key art featuring two raiders holding weapons and standing in the middle of the road, turning to run away from a large Queen spider-like robot on the buildings in the background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cfRFGsMSVs36ZLNFgKUbaU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If your games started unexpectedly crashing after getting a Windows update on or after August 11, you aren't alone. And Microsoft says it's looking into the problem. Microsoft <a href="https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-25h2#microsoft-has-received-reports-of-certain-games-becoming-unresponsive" target="_blank">reports </a>the following "symptoms" popped up for "a limited number of games":</p><ul><li>The game application becomes unresponsive</li><li>The game application closes without notice</li><li>The error "EXCEPTION_ACCESS_VIOLATION" is displayed</li><li>The device restarting without warning</li></ul><p>Microsoft has only confirmed crashes in Arc Raiders, Marvel Tōkon: Fighting Souls, and The Finals so far, but you can send feedback to Microsoft with the <a href="https://support.microsoft.com/help/4021566" target="_blank">Feedback Hub app</a> if you've also found a game crashing since the update.</p><p>Microsoft says it is investigating to see if the latest Windows update is responsible. As of right now, the only client versions that have reported crashes are 25H2 and 24H2, so 26H1 is currently in the clear.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>But Embark, the developer of Arc Raiders, claims on Discord that the “This is a crash related to the file inpoutx64.sys, which changed with the Windows update" (via <a href="https://www.windowslatest.com/2026/08/16/windows-11-kb5121003-is-triggering-game-crashes-and-causing-other-problems-on-some-pcs/" target="_blank">Windows Latest</a>). </p><p>If Embark is correct, it looks like you might have to wait until a future Windows update for this problem to be officially fixed. However, Embark notes that you can type ‘sc stop inpoutx64’ into Command Prompt, then type ‘sc delete inpoutx64’ and delete the inpoutx64.sys file from your drivers folder to fix the problem in the short term. We haven't personally tried this method as we haven't had any crashing issues, so do so at your own risk. </p><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="y6MkVCFTCJ5rv6AR98fvLS" name="C (35)" alt="A screenshot of the uninstall updates option in Windows 11" src="https://cdn.mos.cms.futurecdn.net/y6MkVCFTCJ5rv6AR98fvLS.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: Microsoft)</span></figcaption></figure><p>Update <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/08/kb5121003-windows-11-24h2-25h2-security-update" target="_blank">KB5121003</a>, which is said to be the update responsible for the crashes, contains over <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Aug" target="_blank">400 security updates</a>, although it's not clear yet if changes related to these fixes are responsible for the issues..</p><p>Some users have also reported graphical corruption problems after the latest Windows update. One user on <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/kb5121003_causing_severe_graphical_corruption/" target="_blank">Reddit</a> demonstrates problems in Valorant and Roblox using both a dedicated graphics card and an integrated graphics card. <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/comment/p4anm2g/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">Some users</a> report that uninstalling KB5121003 has fixed black screen problems.</p><p>If you have run into the problem and want to test rolling back your Windows version, you can do so by following the steps below:</p><ul><li>Search <strong>Windows Update</strong> on the Start tab</li><li>Click on <strong>Update history</strong></li><li>Scroll down and click <strong>Uninstall updates</strong></li><li>Uninstall update <strong>KB5120708</strong></li></ul><p>We don't yet have a timeline for when we can expect a patch, but uninstalling the latest update may be a good workaround until then. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GameSir T7 Pro Sugar Whirl review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="GameSir T7 Pro Sugar Whirl" data-widget-title=""></div><p>First, let me admit my biases: Yes, this controller's raspberry ripple blend of pink, blue, and purple really does work for me. That said, the GameSir T7 Pro Sugar Whirl has more going for it than just pretty face buttons, featuring TMR sticks alongside Hall effect triggers. Gorgeous and precise, this is also a wireless controller that's actually compatible with the notoriously picky Xbox consoles.</p><p>Speaking of an untethered experience, this gamepad's charging situation annoys me significantly less than other wireless options. Basically, as someone with a perennially cluttered desk, I didn't think I'd ever be pro charging docks. However, this GameSir gamepad has finally shown me the light.</p><p>Thanks to the charging dock, the T7 Pro offers a pretty seamless wireless experience. That ease of use extends to the refreshingly straightforward software package, which offers a wealth of options to make this Pro pad feel your own. Beyond deadzone tweaking and even motion control fiddling, I personally could have done with just a few more RGB lighting customisation options.</p><p>Unfortunately, the ergonomic design of the T7 Pro may not play well with tiny hand bandits such as myself. Make no mistake, this is far from the heftiest or chunkiest wireless controller. As such, I was surprised to find that certain button placements strained my small palms.</p><p>Furthermore, with a <a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a>, I have the nagging feeling I'm simply paying more for the cute colourway and a bit of extra connectivity I probably won't even use. The simple fact is that if you're not fussed about either RGB lighting or wireless Xbox connectivity, you can get a great Pro pad for less than this asking price.</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 want a wireless controller for PC and Xbox:</strong> There are cheaper options offering wireless connectivity for Xbox, but not loads with TMR sticks and even fewer that offer such a fetching colourway.<br><br>✅ <strong>You're always forgetting to charge your wireless pad:</strong> The charging dock is set it and forget it, bolstering the already decent onboard battery.</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've got small hands:</strong> Though far from the chunkiest controller, the placement of some of the triggers strained my small palms.<br><br>❌ <strong>You're on a budget: </strong>Even with Xbox wireless connectivity, nearly 100 smackers is still a big ask. Plus, you can definitely find great Pro pads for less money.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p><strong>GameSir T7 Pro Sugar Whirl</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Asymmetrical</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>TMR (Tunnel magnetoresistance)</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>A, B, X, Y, Xbox button, Menu, Share, 'M', Toggle View</p></td></tr><tr><td class="firstcol " ><p><strong>Rear buttons</strong></p></td><td  ><p>LB, LT, L4, RB, RT, R4, 2x trigger stop switches (Hall effect triggers)</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>4x rumble motors (one in each grip and each trigger)</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong> </p></td><td  ><p>6-axis gyroscope only on PC</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Tri-mode for XBOX and PC; Bluetooth for Android</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p> 1050 mAH</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 1000 Hz on PC, but 250 Hz on XBOX</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>236g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a></p></td></tr></tbody></table></div><p>'Tri-mode' connectivity encompasses the choice of a wired USB connection, a wireless 2.4 GHz connection, or a wireless Bluetooth connection. While that's nothing to write home about for a PC pad, the T7 Pro offering this same choice of connection for Xbox consoles is because Microsoft's consoles are notoriously picky. Buying one peripheral you can use with multiple gaming devices is simply cost effective—even if you are only getting a 250 Hz polling on console, compared to PC's up to 1,000 Hz rate.</p><p>TMR (or tunnel magnetoresistance) tech in the asymmetric sticks, and Hall effect triggers are also welcome features. TMR is slightly more precise than Hall effect, but both magnetic techs work on a similar principle that essentially banishes stick drift and sticky triggers. Basically, with this magnetic tech there are far fewer points of physical contact within the mechanism, and therefore much less of a risk of internal stick components getting worn away over time.</p><p>As a console interloper, I do think it's a shame that more PC games don't leverage rumble. Whereas the PlayStation 5's DualSense controllers are capable of impressively detailed haptic feedback, Xbox controllers still use a number of rumble motors. As such, you'll find four rumble motors here in the T7 Pro.</p><p>Speaking of that console connection, the T7 Pro also enjoys gyro controls. It's 6-axis, and this motion functionality only works on PC, but you can customise it to an impressive degree in the GameSir Nexus software.</p><h2 class="article-body__section" id="section-ergonomics"><span>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="rHnnkgUrrpTMhZTimVtEYg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/rHnnkgUrrpTMhZTimVtEYg.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 T7 Pro features a firmly attached plastic faceplate, so you're committed to its pink-blue-purple design. Smooth plastic front grips are paired with a textured underside. The membrane D-pad and face buttons are not the loveliest thing I've tapped upon, but they're all satisfyingly clicky to press.</p><p>A plastic body doesn't make this the most premium feeling controller, but it does keep things relatively lightweight. As a result, the T7 Pro weighs in at about 236 grams on its own, making it lighter than a fair few of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best PC controllers</a>. There's also fairly minimal creaking even when I give the grips some real welly. It may not feel super premium, but it's built well enough. That said, the largely plastic construction does leave the gamepad feeling a few bucks/quid short of its $90/£100 price tag.</p><p>As this is an Xbox compatible wireless controller, you're getting asymmetric sticks to match. That's usually not a problem for me and my tiny mitts, though hoovering up gold medals in <a href="https://www.pcgamer.com/games/action/denshattack-review/" target="_blank">Denshattack!</a> proved quite the workout.</p><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="R5dxDRytHuvwhZG5QKARag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/R5dxDRytHuvwhZG5QKARag.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>After an extended session of braking and drifting, my left hand was beginning to feel a little bit sore. This may be because the bottom triggers are bolstered by a particularly chunky finger rest, widening the gap between my left trigger-tapping pointer and my middle finger. </p><p>Remappable back buttons also hang out within reach of where my middle fingers rest. L4 and R4 are low-profile buttons with textured covers that make them easy to find by touch (which I find vastly preferable to the DualSense Edge's great big back flippers). Still, for those with stumpy digits like me, that could mean more stretching and discomfort over time.</p><div><blockquote><p>If you've got mitts lacking in width or short phalanges like me, be warned.</p></blockquote></div><p>It was a similar story of strain when I tested out the pad's 2-stop trigger settings in <a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-review/" target="_blank">Doom: The Dark Ages</a>. Blasting baddies pulled at my palms and knuckles after a short time with Id's latest, even after reducing the triggers' actuation distance. That's a shame because the T7 Pro Swirl really isn't the chunkiest or heaviest of controllers my tiny phalanges have had to tango with. </p><p>In <a href="https://www.pcgamer.com/games/action/i-got-to-play-dead-as-disco-early-and-its-a-vivid-unrestrained-romp-that-lets-you-brawl-through-music-videos-like-a-kung-fu-baby-driver/" target="_blank">Dead As Disco's</a> more face-button-focused gameplay, my hands otherwise don''t feel anywhere near as stressed out. That suggests to me that what's causing the strain has less to do with the heft of the controller, and maybe more to do with the high-up placement of the T7 Pro's pronounced top trigger buttons. If you've got mitts lacking in width or short phalanges like me, be warned.</p><h2 class="article-body__section" id="section-performance"><span>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="Z3wTjTCzsG9aNyHpfjE9cg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Z3wTjTCzsG9aNyHpfjE9cg.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As I repeatedly try to pull off a Finger Heel 180 trick in the train game of Tony Hawk's finger boarding fever dreams, Denshattack!, TMR tech is definitely welcome as I wiggle the right stick for all its worth. Textured tops ensure the sticks don't slip out of grip as I try to rack up an even bigger combo. Add to that a 1,000 Hz top polling rate, and these sticks are just as flicky and responsive as you could want.</p><p>Then there are the usual membrane face buttons and a D-Pad. These press down cleanly, and are satisfyingly clicky. On the reverse of the pad are two remappable back buttons as well. Unlike the shiny face buttons, these are low-profile and subtly textured so you can easily find them by feel.</p><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="wKWavWjsVDjcCJgeQNhwVg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/wKWavWjsVDjcCJgeQNhwVg.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 responsive Hall effect triggers also feature '2-stage trigger stops'. There are two flicky switches on the pad's underside, and flicking one of these down allows you to press the corresponding trigger all the way to the bottom. Flicking the switch up offers a much shorter actuation distance for each bottom trigger. This gives pressing the bottom triggers a clicky quality, like the top triggers.</p><p>Clicky triggers are often popular among the competitive crowd, as the cut-down actuation distance shaves off precious milliseconds between plays. Such a saving of time is largely wasted on me, though, as my most intense online play experience recently was getting lost in <a href="https://www.pcgamer.com/games/puzzle/big-walk-review/" target="_blank">Big Walk</a>. Similarly, a polling rate of 1,000 Hz is more than enough for most intents and purposes, but the esports sickos will likely be left wanting more.</p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8kNBq8Vc2FsvKw8qZB6Ljg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/8kNBq8Vc2FsvKw8qZB6Ljg.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>You may already know about <a href="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/" target="_blank">my penchant for purple</a>. This controller not only takes aim at my particular colour-based obsession, but it also mixes in a raspberry ripple-esque combination of blues and pinks across the charging dock, faceplate, and buttons—hence the 'Sugar Whirl' name. I particularly enjoy the two sticks being different colours.</p><p>Under the incandescent lighting found in PC Gamer towers, it can look a little tacky. Natural light is generally kinder to the colourway, but it really comes into its own in-game. By default, RGB lighting bathes the controller in an icy blue light that complements the colourway, illuminating the pad's underside and shining through the face buttons. This gives the AXBY buttons an almost pearlescent vibe when in active use that I really enjoy.</p><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="vjPkRFVXZTdghspeCW7ogg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/vjPkRFVXZTdghspeCW7ogg.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'm much less keen on the green goo glow the controller emits while it's charging. Thankfully, you can either dial this down or turn it off completely in the GameSir Nexus software, not to mention all the other options you have for tinkering with the Sugar Whirl's RGB lighting.</p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mmyTZF84mweGRu7zHBC9fe" name="GameSir Nexus software - with GameSir T7 Pro Sugar Whirl Wireless Controller" alt="Screenshots of all the options available in the GameSir Nexus software." src="https://cdn.mos.cms.futurecdn.net/mmyTZF84mweGRu7zHBC9fe.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: GameSir)</span></figcaption></figure><p>You can finely tweak a variety of settings in the GameSir Nexus software across four different profiles, with each one accessed via a combination of the centre 'M' button and the facebuttons. The software itself can either be <a href="https://gamesir.sa/en/pages/gamesir-nexus?srsltid=AfmBOoreDr-kPYdDEXEFz1tGT2cyIF1HH-bongsR-m-bERYE_8X2A3Km" target="_blank">manually downloaded from here</a>, or from the Microsoft store, but lacks anything in the way of a web-based app.</p><p>The smallest amount of software tinkering allowed me to tone down the green goo glow the controller emits while charging, and I've set it up so that the pad automatically connects to my PC as soon as I lift it from the charging cradle. That's more than enough for me, but if you want to get lost in the software weeds, Nexus offers a wealth of features to play with.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E76kwT48RMPSiyDnKtGrce.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FTv2AVs9NZU9Lf3iqpLWee.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U7VXdJXDfZU4QnzxVCwsee.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/69NFLXMqrTJwaXFNokdBde.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure></figure><p>For a start, you can finely tune the stick and trigger deadzones, plus much more besides via an array of sliders, toggles and presets. You can also tune the pad's motion controls to a similarly in-depth degree, tinker with the intensity of its rumble motors, and, of course, fiddle with the RGB. Broadly speaking, the software is how you're going to get the most out of this Pro pad; there's a wealth of options to make the T7 Pro your own, though the lighting settings could do with just a few more customisation options. Seeing a swirling rainbow illuminating my gamepad from within is cool and all, but I would have appreciated the option to more finely tune the lights' hue.</p><p>RGB customisation was the only category of setting I found wanting, though. While I probably won't touch half of the settings available, I appreciate how clearly the Nexus software lays out all of the options. If the software's home screen selection overwhelms, you can click through to a specific focussed category of settings, and mess around from there. It's intuitive and straightforward to use.</p><h2 class="article-body__section" id="section-battery"><span>Battery</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="DrUc7LTW929Ebc2iaFWPmg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/DrUc7LTW929Ebc2iaFWPmg.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 major thing that annoys me about most wireless peripherals is how often the hardware needs to become wired again to charge. A wireless PC controller can have the biggest battery in the world, but it will eventually resemble its wired counterparts sooner or later. </p><p>Not to knock any of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best wired controllers</a>, but it's not the experience I'm personally looking for as a pad-wielding PC Gamer; a wire is just one more thing that can make a mess at my already cluttered desk, either getting chewed up by my gaming chair castors, or by knocking over a bunch of my Miku Hatsune figurines during a particularly heated gamer moment.</p><p>Thanks to the GameSir T7 Pro Sugar Whirl though, I'm a charging cradle convert. The dock here features a USB-C port, with a compartment on its underside for the 2.4 GHz dongle. Yes, that means there <em>is </em>still a wire involved if you want to use the dock as a wireless receiver, though you can easily cable-manage that out of the way (and nowhere near, say, your army of Miku).</p><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="EzdrpWwoeCuPFCqgsX9Bag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/EzdrpWwoeCuPFCqgsX9Bag.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>Thanks to metal pins in the cradle and contact points on the underside of the pad itself, the pad can easily charge back up when it's not in use. The gamepad's 1050 mAh battery is decent enough on its own though, holding up through numerous, marathon sessions of Denshattack! without requiring a charge. If I forgot to place the pad back in the charging cradle one day, I still had plenty of juice to take back to the track the next. But obviously, playing at 1,000 Hz polling and with the RGB lights whirling away will drain the battery much faster. </p><p>It means I no longer have to remember to charge this bad boy up myself, because I'll just pop it back onto the dock when I'm done. It's a set-it-and-forget-it sort of setup that my forgetful-self very much appreciates. Couple that with the software setting that makes the gamepad automatically connect to your PC as soon as you lift it from the charging cradle, and it's a really seamless experience.</p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ULKrTtcit9UBdnRwqfPwdg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/ULKrTtcit9UBdnRwqfPwdg.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>Like I said before, the Sugar Whirl's wireless Xbox connectivity will be a headline feature for some. If that really is key for you, the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a> is one other option that also comes with TMR sticks, a charging dock, 'elite 2-way trigger locks,' and costs half the price. </p><p>Otherwise, the difference in quality is arguably most noticeable in the D10's complete lack of software, and 'just okay' D-Pad and triggers. The D10 even comes in a '<a href="https://www.easysmx.com/products/easysmx-d10-multiplatform-gaming-controller-with-tmr-joysticks-trigger-lock-charging-dock" target="_blank">Farout Purple</a>' colourway I may have to pick up myself.</p><p>If you're already willing to drop a serious chunk of change on a controller, the newer <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a> more than earns the crown as the best high end controller, though this update does drop Xbox connectivity and haptic feedback.</p><div><blockquote><p>The best controller overall is the GameSir G7 Pro Tri-Mode, and it costs around 10 bucks less.</p></blockquote></div><p>A much more likely option is the elephant in the room: <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best controller overall</a> is the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-Mode</a>, and it costs around 10 bucks less. The key differences are that the Tri-Mode enjoys a magnetic faceplate, plus a better battery, but completely lacks RGB lighting, and only works on Xbox via a <em>wired</em> connection. </p><p>These will be minor omissions for most, leaving little contest between the two controllers; if you're not endeared to the Sugar Whirl's cotton candy colourway and you're not fussed about connecting to your Xbox wirelessly, the GameSir G7 Pro Tri-Mode is still the obvious choice.</p><p>As for me though, I just can't resist a fun colourway. I can see myself spending many more hours with the Sugar Whirl, as much as it sometimes pains my poor palms. Even so, if it was my money, I'd struggle to justify putting down nearly 100 smackers on it.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/gamesir-t7-pro-sugar-whirl-review/</link>
                                                                            <description>
                            <![CDATA[ Not quite the sweetest of treats. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UqYpGJHzTjVNBBmU2SrrJn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mx7yo6es2nmRYz34Vbuagg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 14 Aug 2026 13:13:19 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/mx7yo6es2nmRYz34Vbuagg-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles.]]></media:description>                                                            <media:text><![CDATA[The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles.]]></media:text>
                                <media:title type="plain"><![CDATA[The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mx7yo6es2nmRYz34Vbuagg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="GameSir T7 Pro Sugar Whirl" data-widget-title=""></div><p>First, let me admit my biases: Yes, this controller's raspberry ripple blend of pink, blue, and purple really does work for me. That said, the GameSir T7 Pro Sugar Whirl has more going for it than just pretty face buttons, featuring TMR sticks alongside Hall effect triggers. Gorgeous and precise, this is also a wireless controller that's actually compatible with the notoriously picky Xbox consoles.</p><p>Speaking of an untethered experience, this gamepad's charging situation annoys me significantly less than other wireless options. Basically, as someone with a perennially cluttered desk, I didn't think I'd ever be pro charging docks. However, this GameSir gamepad has finally shown me the light.</p><p>Thanks to the charging dock, the T7 Pro offers a pretty seamless wireless experience. That ease of use extends to the refreshingly straightforward software package, which offers a wealth of options to make this Pro pad feel your own. Beyond deadzone tweaking and even motion control fiddling, I personally could have done with just a few more RGB lighting customisation options.</p><p>Unfortunately, the ergonomic design of the T7 Pro may not play well with tiny hand bandits such as myself. Make no mistake, this is far from the heftiest or chunkiest wireless controller. As such, I was surprised to find that certain button placements strained my small palms.</p><p>Furthermore, with a <a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a>, I have the nagging feeling I'm simply paying more for the cute colourway and a bit of extra connectivity I probably won't even use. The simple fact is that if you're not fussed about either RGB lighting or wireless Xbox connectivity, you can get a great Pro pad for less than this asking price.</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 want a wireless controller for PC and Xbox:</strong> There are cheaper options offering wireless connectivity for Xbox, but not loads with TMR sticks and even fewer that offer such a fetching colourway.<br><br>✅ <strong>You're always forgetting to charge your wireless pad:</strong> The charging dock is set it and forget it, bolstering the already decent onboard battery.</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've got small hands:</strong> Though far from the chunkiest controller, the placement of some of the triggers strained my small palms.<br><br>❌ <strong>You're on a budget: </strong>Even with Xbox wireless connectivity, nearly 100 smackers is still a big ask. Plus, you can definitely find great Pro pads for less money.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p><strong>GameSir T7 Pro Sugar Whirl</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Asymmetrical</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>TMR (Tunnel magnetoresistance)</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>A, B, X, Y, Xbox button, Menu, Share, 'M', Toggle View</p></td></tr><tr><td class="firstcol " ><p><strong>Rear buttons</strong></p></td><td  ><p>LB, LT, L4, RB, RT, R4, 2x trigger stop switches (Hall effect triggers)</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>4x rumble motors (one in each grip and each trigger)</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong> </p></td><td  ><p>6-axis gyroscope only on PC</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Tri-mode for XBOX and PC; Bluetooth for Android</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p> 1050 mAH</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 1000 Hz on PC, but 250 Hz on XBOX</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>236g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a></p></td></tr></tbody></table></div><p>'Tri-mode' connectivity encompasses the choice of a wired USB connection, a wireless 2.4 GHz connection, or a wireless Bluetooth connection. While that's nothing to write home about for a PC pad, the T7 Pro offering this same choice of connection for Xbox consoles is because Microsoft's consoles are notoriously picky. Buying one peripheral you can use with multiple gaming devices is simply cost effective—even if you are only getting a 250 Hz polling on console, compared to PC's up to 1,000 Hz rate.</p><p>TMR (or tunnel magnetoresistance) tech in the asymmetric sticks, and Hall effect triggers are also welcome features. TMR is slightly more precise than Hall effect, but both magnetic techs work on a similar principle that essentially banishes stick drift and sticky triggers. Basically, with this magnetic tech there are far fewer points of physical contact within the mechanism, and therefore much less of a risk of internal stick components getting worn away over time.</p><p>As a console interloper, I do think it's a shame that more PC games don't leverage rumble. Whereas the PlayStation 5's DualSense controllers are capable of impressively detailed haptic feedback, Xbox controllers still use a number of rumble motors. As such, you'll find four rumble motors here in the T7 Pro.</p><p>Speaking of that console connection, the T7 Pro also enjoys gyro controls. It's 6-axis, and this motion functionality only works on PC, but you can customise it to an impressive degree in the GameSir Nexus software.</p><h2 class="article-body__section" id="section-ergonomics"><span>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="rHnnkgUrrpTMhZTimVtEYg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/rHnnkgUrrpTMhZTimVtEYg.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 T7 Pro features a firmly attached plastic faceplate, so you're committed to its pink-blue-purple design. Smooth plastic front grips are paired with a textured underside. The membrane D-pad and face buttons are not the loveliest thing I've tapped upon, but they're all satisfyingly clicky to press.</p><p>A plastic body doesn't make this the most premium feeling controller, but it does keep things relatively lightweight. As a result, the T7 Pro weighs in at about 236 grams on its own, making it lighter than a fair few of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best PC controllers</a>. There's also fairly minimal creaking even when I give the grips some real welly. It may not feel super premium, but it's built well enough. That said, the largely plastic construction does leave the gamepad feeling a few bucks/quid short of its $90/£100 price tag.</p><p>As this is an Xbox compatible wireless controller, you're getting asymmetric sticks to match. That's usually not a problem for me and my tiny mitts, though hoovering up gold medals in <a href="https://www.pcgamer.com/games/action/denshattack-review/" target="_blank">Denshattack!</a> proved quite the workout.</p><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="R5dxDRytHuvwhZG5QKARag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/R5dxDRytHuvwhZG5QKARag.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>After an extended session of braking and drifting, my left hand was beginning to feel a little bit sore. This may be because the bottom triggers are bolstered by a particularly chunky finger rest, widening the gap between my left trigger-tapping pointer and my middle finger. </p><p>Remappable back buttons also hang out within reach of where my middle fingers rest. L4 and R4 are low-profile buttons with textured covers that make them easy to find by touch (which I find vastly preferable to the DualSense Edge's great big back flippers). Still, for those with stumpy digits like me, that could mean more stretching and discomfort over time.</p><div><blockquote><p>If you've got mitts lacking in width or short phalanges like me, be warned.</p></blockquote></div><p>It was a similar story of strain when I tested out the pad's 2-stop trigger settings in <a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-review/" target="_blank">Doom: The Dark Ages</a>. Blasting baddies pulled at my palms and knuckles after a short time with Id's latest, even after reducing the triggers' actuation distance. That's a shame because the T7 Pro Swirl really isn't the chunkiest or heaviest of controllers my tiny phalanges have had to tango with. </p><p>In <a href="https://www.pcgamer.com/games/action/i-got-to-play-dead-as-disco-early-and-its-a-vivid-unrestrained-romp-that-lets-you-brawl-through-music-videos-like-a-kung-fu-baby-driver/" target="_blank">Dead As Disco's</a> more face-button-focused gameplay, my hands otherwise don''t feel anywhere near as stressed out. That suggests to me that what's causing the strain has less to do with the heft of the controller, and maybe more to do with the high-up placement of the T7 Pro's pronounced top trigger buttons. If you've got mitts lacking in width or short phalanges like me, be warned.</p><h2 class="article-body__section" id="section-performance"><span>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="Z3wTjTCzsG9aNyHpfjE9cg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Z3wTjTCzsG9aNyHpfjE9cg.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As I repeatedly try to pull off a Finger Heel 180 trick in the train game of Tony Hawk's finger boarding fever dreams, Denshattack!, TMR tech is definitely welcome as I wiggle the right stick for all its worth. Textured tops ensure the sticks don't slip out of grip as I try to rack up an even bigger combo. Add to that a 1,000 Hz top polling rate, and these sticks are just as flicky and responsive as you could want.</p><p>Then there are the usual membrane face buttons and a D-Pad. These press down cleanly, and are satisfyingly clicky. On the reverse of the pad are two remappable back buttons as well. Unlike the shiny face buttons, these are low-profile and subtly textured so you can easily find them by feel.</p><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="wKWavWjsVDjcCJgeQNhwVg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/wKWavWjsVDjcCJgeQNhwVg.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 responsive Hall effect triggers also feature '2-stage trigger stops'. There are two flicky switches on the pad's underside, and flicking one of these down allows you to press the corresponding trigger all the way to the bottom. Flicking the switch up offers a much shorter actuation distance for each bottom trigger. This gives pressing the bottom triggers a clicky quality, like the top triggers.</p><p>Clicky triggers are often popular among the competitive crowd, as the cut-down actuation distance shaves off precious milliseconds between plays. Such a saving of time is largely wasted on me, though, as my most intense online play experience recently was getting lost in <a href="https://www.pcgamer.com/games/puzzle/big-walk-review/" target="_blank">Big Walk</a>. Similarly, a polling rate of 1,000 Hz is more than enough for most intents and purposes, but the esports sickos will likely be left wanting more.</p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8kNBq8Vc2FsvKw8qZB6Ljg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/8kNBq8Vc2FsvKw8qZB6Ljg.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>You may already know about <a href="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/" target="_blank">my penchant for purple</a>. This controller not only takes aim at my particular colour-based obsession, but it also mixes in a raspberry ripple-esque combination of blues and pinks across the charging dock, faceplate, and buttons—hence the 'Sugar Whirl' name. I particularly enjoy the two sticks being different colours.</p><p>Under the incandescent lighting found in PC Gamer towers, it can look a little tacky. Natural light is generally kinder to the colourway, but it really comes into its own in-game. By default, RGB lighting bathes the controller in an icy blue light that complements the colourway, illuminating the pad's underside and shining through the face buttons. This gives the AXBY buttons an almost pearlescent vibe when in active use that I really enjoy.</p><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="vjPkRFVXZTdghspeCW7ogg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/vjPkRFVXZTdghspeCW7ogg.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'm much less keen on the green goo glow the controller emits while it's charging. Thankfully, you can either dial this down or turn it off completely in the GameSir Nexus software, not to mention all the other options you have for tinkering with the Sugar Whirl's RGB lighting.</p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mmyTZF84mweGRu7zHBC9fe" name="GameSir Nexus software - with GameSir T7 Pro Sugar Whirl Wireless Controller" alt="Screenshots of all the options available in the GameSir Nexus software." src="https://cdn.mos.cms.futurecdn.net/mmyTZF84mweGRu7zHBC9fe.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: GameSir)</span></figcaption></figure><p>You can finely tweak a variety of settings in the GameSir Nexus software across four different profiles, with each one accessed via a combination of the centre 'M' button and the facebuttons. The software itself can either be <a href="https://gamesir.sa/en/pages/gamesir-nexus?srsltid=AfmBOoreDr-kPYdDEXEFz1tGT2cyIF1HH-bongsR-m-bERYE_8X2A3Km" target="_blank">manually downloaded from here</a>, or from the Microsoft store, but lacks anything in the way of a web-based app.</p><p>The smallest amount of software tinkering allowed me to tone down the green goo glow the controller emits while charging, and I've set it up so that the pad automatically connects to my PC as soon as I lift it from the charging cradle. That's more than enough for me, but if you want to get lost in the software weeds, Nexus offers a wealth of features to play with.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E76kwT48RMPSiyDnKtGrce.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FTv2AVs9NZU9Lf3iqpLWee.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U7VXdJXDfZU4QnzxVCwsee.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/69NFLXMqrTJwaXFNokdBde.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure></figure><p>For a start, you can finely tune the stick and trigger deadzones, plus much more besides via an array of sliders, toggles and presets. You can also tune the pad's motion controls to a similarly in-depth degree, tinker with the intensity of its rumble motors, and, of course, fiddle with the RGB. Broadly speaking, the software is how you're going to get the most out of this Pro pad; there's a wealth of options to make the T7 Pro your own, though the lighting settings could do with just a few more customisation options. Seeing a swirling rainbow illuminating my gamepad from within is cool and all, but I would have appreciated the option to more finely tune the lights' hue.</p><p>RGB customisation was the only category of setting I found wanting, though. While I probably won't touch half of the settings available, I appreciate how clearly the Nexus software lays out all of the options. If the software's home screen selection overwhelms, you can click through to a specific focussed category of settings, and mess around from there. It's intuitive and straightforward to use.</p><h2 class="article-body__section" id="section-battery"><span>Battery</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="DrUc7LTW929Ebc2iaFWPmg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/DrUc7LTW929Ebc2iaFWPmg.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 major thing that annoys me about most wireless peripherals is how often the hardware needs to become wired again to charge. A wireless PC controller can have the biggest battery in the world, but it will eventually resemble its wired counterparts sooner or later. </p><p>Not to knock any of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best wired controllers</a>, but it's not the experience I'm personally looking for as a pad-wielding PC Gamer; a wire is just one more thing that can make a mess at my already cluttered desk, either getting chewed up by my gaming chair castors, or by knocking over a bunch of my Miku Hatsune figurines during a particularly heated gamer moment.</p><p>Thanks to the GameSir T7 Pro Sugar Whirl though, I'm a charging cradle convert. The dock here features a USB-C port, with a compartment on its underside for the 2.4 GHz dongle. Yes, that means there <em>is </em>still a wire involved if you want to use the dock as a wireless receiver, though you can easily cable-manage that out of the way (and nowhere near, say, your army of Miku).</p><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="EzdrpWwoeCuPFCqgsX9Bag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/EzdrpWwoeCuPFCqgsX9Bag.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>Thanks to metal pins in the cradle and contact points on the underside of the pad itself, the pad can easily charge back up when it's not in use. The gamepad's 1050 mAh battery is decent enough on its own though, holding up through numerous, marathon sessions of Denshattack! without requiring a charge. If I forgot to place the pad back in the charging cradle one day, I still had plenty of juice to take back to the track the next. But obviously, playing at 1,000 Hz polling and with the RGB lights whirling away will drain the battery much faster. </p><p>It means I no longer have to remember to charge this bad boy up myself, because I'll just pop it back onto the dock when I'm done. It's a set-it-and-forget-it sort of setup that my forgetful-self very much appreciates. Couple that with the software setting that makes the gamepad automatically connect to your PC as soon as you lift it from the charging cradle, and it's a really seamless experience.</p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ULKrTtcit9UBdnRwqfPwdg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/ULKrTtcit9UBdnRwqfPwdg.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>Like I said before, the Sugar Whirl's wireless Xbox connectivity will be a headline feature for some. If that really is key for you, the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a> is one other option that also comes with TMR sticks, a charging dock, 'elite 2-way trigger locks,' and costs half the price. </p><p>Otherwise, the difference in quality is arguably most noticeable in the D10's complete lack of software, and 'just okay' D-Pad and triggers. The D10 even comes in a '<a href="https://www.easysmx.com/products/easysmx-d10-multiplatform-gaming-controller-with-tmr-joysticks-trigger-lock-charging-dock" target="_blank">Farout Purple</a>' colourway I may have to pick up myself.</p><p>If you're already willing to drop a serious chunk of change on a controller, the newer <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a> more than earns the crown as the best high end controller, though this update does drop Xbox connectivity and haptic feedback.</p><div><blockquote><p>The best controller overall is the GameSir G7 Pro Tri-Mode, and it costs around 10 bucks less.</p></blockquote></div><p>A much more likely option is the elephant in the room: <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best controller overall</a> is the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-Mode</a>, and it costs around 10 bucks less. The key differences are that the Tri-Mode enjoys a magnetic faceplate, plus a better battery, but completely lacks RGB lighting, and only works on Xbox via a <em>wired</em> connection. </p><p>These will be minor omissions for most, leaving little contest between the two controllers; if you're not endeared to the Sugar Whirl's cotton candy colourway and you're not fussed about connecting to your Xbox wirelessly, the GameSir G7 Pro Tri-Mode is still the obvious choice.</p><p>As for me though, I just can't resist a fun colourway. I can see myself spending many more hours with the Sugar Whirl, as much as it sometimes pains my poor palms. Even so, if it was my money, I'd struggle to justify putting down nearly 100 smackers on it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Redditor buys what looks to be a prototype Xbox Elite Series 3 controller, posts about it on Reddit, then the thread goes dark ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's been nearly seven years since the release of the <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2-review/" target="_blank">Xbox Elite Series 2</a>, which means we're well overdue for a new one. It sure looks like that's set to happen soon, as one Redditor just posted the <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/anyone_know_what_controller_this_is_is_this_the/" target="_blank">motherlode of information on the unreleased pad</a>—then their account mysteriously vanished and the thread was partially wiped with it.</p><p>The internet tends not to 'lose' things, so you can view all the leaked images on <a href="https://x.com/tomwarren/status/2087281743606763901" target="_blank">this thread</a> from The Verge's Tom Warren. Warren also notes that the original poster says they bought the controller <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p336sll/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">for $200</a> on OfferUp, a marketplace for buying things in your local area. The poster says, in a comment still live on the thread, that they live in Seattle. Seattle being the home of, you guessed it, Microsoft. The company's Redmond HQ is located just next door in Redmond, Washington.</p><p>Lots of people live in Seattle and they don't all work at Microsoft. So what else do we have to go on as to the veracity of this particular thread?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>First off, the Redditor's new pad looks suspiciously <a href="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/" target="_blank">similar to one we saw back in May</a>. It has the same shape, trigger locks, rear paddle mounting, and battery bay. All of which look to be pretty neat features for the Series 3 pad, if not miles apart from the Series 2 pad. The face buttons, ABXY, are perhaps a little larger. A couple of us here reckon the new Elite Series 3 resembles the Razer Wolverine V3 Pro in overall shape, which isn't a bad thing. That's our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best high-end controller</a> right now.</p><p>A screen sits between the bumpers along the top of the Series 3 pad, likely some sort of mono OLED display. These tend to be pretty useful for this sorta application, as the self-emitting pixels draw very little power. In the leaked photos, this display shows an aka.ms URL, made using Microsoft's own shortening service. They also show a very basic game running on the screen in a later comment.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2087281743606763901"><p lang="en" dir="ltr">Microsoft’s upcoming Xbox Elite 3 controller has appeared on Reddit. The poster says they purchased it on OfferUp https://t.co/HeJ3TQ9qaG pic.twitter.com/XsPOP1eCaH<a href="https://twitter.com/cantworkitout/status/2087281743606763901">August 11, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Some other redditors in the thread have followed various versions of the URL in the pics and claim to have landed on documents pertaining to the controller's use and how to connect it via a dedicated connection for cloud gaming—that's a feature we've seen with the <a href="https://www.pcgamer.com/amazon-luna-hands-on-a-decent-start-for-yet-another-cloud-gaming-competitor/" target="_blank">Amazon Luna Controller</a> and Google Stadia Controller (rip). This was also a feature tipped in that original leak from May.</p><p>The comments from the original poster have not been removed, and from these we can gather a few more tidbits of information. They show the paddles and d-pad removed from the pad, with the latter having a simpler but similar rocking design to the previous model. They confirm that the triggers become clicky once set to the shortest option via the rear adjusters. We also catch a glimpse of the battery, which clearly states "PROTOTYPE NOT FOR SALE" on it. Oops.</p><p>The Elite Series 3 even includes a travel case, as has been included with both previous generations of Elite controller, albeit a slimmer version. I would guess that means this thing is pretty far down the road for development. Providing it is real and not some elaborate 3D-printed project, this may suggest we see the controller arrive before the year's 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:877px;"><p class="vanilla-image-block" style="padding-top:55.53%;"><img id="S2QrBfKFEw9RPhFiKyShBi" name="1786616976.jpg" alt="An exchange between two people on Reddit about the Xbox Elite Series 3." src="https://cdn.mos.cms.futurecdn.net/S2QrBfKFEw9RPhFiKyShBi.jpg" mos="" align="middle" fullscreen="" width="877" height="487" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Reddit)</span></figcaption></figure><p>What we don't know about the Series 3 is whether the sticks are using Hall effect or TMR (Tunnel Magnetoresistance) technology. This helps banish stick drift for the most part, and it's something <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">I value more than most other features these days</a>. The Elite Series 2 famously lacks any such tech, instead using older potentiometers on account of its age, but we can only assume the Series 3 will. It would be wild not to.</p><p>We also don't know how it will work in action, as the redditor says <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p3365wl/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">it doesn't work on either Xbox or PC right now</a>. Some suggest it will be locked to a dev account, which does seem likely if it's the real deal.</p><p>The redditor succinctly sums up the controller in one reply, noting it "feels like a Xbox Series X controller but pro and more clicky." If that sounds like your sorta thing, and I have to admit, it is mine, then this might be something to keep an eye out for in the near future. That said, as someone who has owned a couple of Elite controllers over the years, I've started to look elsewhere these days. You don't have to spend Elite money for an elite controller anymore—the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> proves that.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/redditor-buys-what-looks-to-be-a-prototype-for-unreleased-xbox-elite-series-3-controller-posts-about-it-on-reddit-then-the-thread-goes-dark/</link>
                                                                            <description>
                            <![CDATA[ Looks suspiciously similar to controller leaked back in May. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LTmSjEStD2y3xrsDkavTs8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RZqRVLLT9auJS75PZacqbZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 13 Aug 2026 10:54:56 +0000</pubDate>                                                                                                                                <updated>Thu, 13 Aug 2026 11:49:03 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/RZqRVLLT9auJS75PZacqbZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox Elite Series 2 controller]]></media:description>                                                            <media:text><![CDATA[Xbox Elite Series 2 controller]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox Elite Series 2 controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RZqRVLLT9auJS75PZacqbZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's been nearly seven years since the release of the <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2-review/" target="_blank">Xbox Elite Series 2</a>, which means we're well overdue for a new one. It sure looks like that's set to happen soon, as one Redditor just posted the <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/anyone_know_what_controller_this_is_is_this_the/" target="_blank">motherlode of information on the unreleased pad</a>—then their account mysteriously vanished and the thread was partially wiped with it.</p><p>The internet tends not to 'lose' things, so you can view all the leaked images on <a href="https://x.com/tomwarren/status/2087281743606763901" target="_blank">this thread</a> from The Verge's Tom Warren. Warren also notes that the original poster says they bought the controller <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p336sll/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">for $200</a> on OfferUp, a marketplace for buying things in your local area. The poster says, in a comment still live on the thread, that they live in Seattle. Seattle being the home of, you guessed it, Microsoft. The company's Redmond HQ is located just next door in Redmond, Washington.</p><p>Lots of people live in Seattle and they don't all work at Microsoft. So what else do we have to go on as to the veracity of this particular thread?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>First off, the Redditor's new pad looks suspiciously <a href="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/" target="_blank">similar to one we saw back in May</a>. It has the same shape, trigger locks, rear paddle mounting, and battery bay. All of which look to be pretty neat features for the Series 3 pad, if not miles apart from the Series 2 pad. The face buttons, ABXY, are perhaps a little larger. A couple of us here reckon the new Elite Series 3 resembles the Razer Wolverine V3 Pro in overall shape, which isn't a bad thing. That's our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best high-end controller</a> right now.</p><p>A screen sits between the bumpers along the top of the Series 3 pad, likely some sort of mono OLED display. These tend to be pretty useful for this sorta application, as the self-emitting pixels draw very little power. In the leaked photos, this display shows an aka.ms URL, made using Microsoft's own shortening service. They also show a very basic game running on the screen in a later comment.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2087281743606763901"><p lang="en" dir="ltr">Microsoft’s upcoming Xbox Elite 3 controller has appeared on Reddit. The poster says they purchased it on OfferUp https://t.co/HeJ3TQ9qaG pic.twitter.com/XsPOP1eCaH<a href="https://twitter.com/cantworkitout/status/2087281743606763901">August 11, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Some other redditors in the thread have followed various versions of the URL in the pics and claim to have landed on documents pertaining to the controller's use and how to connect it via a dedicated connection for cloud gaming—that's a feature we've seen with the <a href="https://www.pcgamer.com/amazon-luna-hands-on-a-decent-start-for-yet-another-cloud-gaming-competitor/" target="_blank">Amazon Luna Controller</a> and Google Stadia Controller (rip). This was also a feature tipped in that original leak from May.</p><p>The comments from the original poster have not been removed, and from these we can gather a few more tidbits of information. They show the paddles and d-pad removed from the pad, with the latter having a simpler but similar rocking design to the previous model. They confirm that the triggers become clicky once set to the shortest option via the rear adjusters. We also catch a glimpse of the battery, which clearly states "PROTOTYPE NOT FOR SALE" on it. Oops.</p><p>The Elite Series 3 even includes a travel case, as has been included with both previous generations of Elite controller, albeit a slimmer version. I would guess that means this thing is pretty far down the road for development. Providing it is real and not some elaborate 3D-printed project, this may suggest we see the controller arrive before the year's 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:877px;"><p class="vanilla-image-block" style="padding-top:55.53%;"><img id="S2QrBfKFEw9RPhFiKyShBi" name="1786616976.jpg" alt="An exchange between two people on Reddit about the Xbox Elite Series 3." src="https://cdn.mos.cms.futurecdn.net/S2QrBfKFEw9RPhFiKyShBi.jpg" mos="" align="middle" fullscreen="" width="877" height="487" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Reddit)</span></figcaption></figure><p>What we don't know about the Series 3 is whether the sticks are using Hall effect or TMR (Tunnel Magnetoresistance) technology. This helps banish stick drift for the most part, and it's something <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">I value more than most other features these days</a>. The Elite Series 2 famously lacks any such tech, instead using older potentiometers on account of its age, but we can only assume the Series 3 will. It would be wild not to.</p><p>We also don't know how it will work in action, as the redditor says <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p3365wl/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">it doesn't work on either Xbox or PC right now</a>. Some suggest it will be locked to a dev account, which does seem likely if it's the real deal.</p><p>The redditor succinctly sums up the controller in one reply, noting it "feels like a Xbox Series X controller but pro and more clicky." If that sounds like your sorta thing, and I have to admit, it is mine, then this might be something to keep an eye out for in the near future. That said, as someone who has owned a couple of Elite controllers over the years, I've started to look elsewhere these days. You don't have to spend Elite money for an elite controller anymore—the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> proves that.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The humble Wii Nunchuck has been turned into a video editing tool because it's 'one of the most ergonomic things ever made' ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jMN4zio32E0" allowfullscreen></iframe></div></div><p>If you spend your time editing videos, you may have already invested in a macropad. Or, you're probably used to the monotony of spamming shortcuts on your keyboard to swap between different tools. This can be a pain on the wrist because of the angle you hover over a keyboard, but there's now a new way around it—the humble Nintendo Wii Nunchuk.</p><p>As spotted by <a href="https://hackaday.com/2026/08/07/wrist-welcomes-wii-nunchuk-as-gloriously-ergonomic-macropad/" target="_blank">Hackaday</a>, John Dingley, of YouTube account <a href="https://www.youtube.com/watch?v=jMN4zio32E0" target="_blank">John's Projects</a>, posted their latest creation last week. In essence, they've hooked a Wii Nunchuk up to their PC using the <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> to use it like a macropad.</p><p>The <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> is an open-source USB adapter for connecting the Nunchuk controller to a computer. The adapter uses the <a href="https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html?utm_source=github&utm_medium=ANAVI&utm_campaign=Handle" target="_blank">Seeed Studio Xiao RP2040</a>, which, at just a couple of dollars, makes the entire setup surprisingly cheap.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>You might be wondering why they used the Nunchuk, and it's not just to be a little geeky.  The Wii Nunchuk is comfortable and light, as it was designed for a family-friendly console. And most importantly, you can hold it upright. </p><p>For a video editor who is likely spending hours at their desk at a time, the hope is that it won't cause pain in their wrist from holding it on the desk all day. John claims it is "super comfortable" and that it is "one of the most ergonomic things ever made".</p><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="YR2iY4Q24bsXiUhkp4YTcN" name="Wii Nunchuck as DaVinci Resolve Macro-Pad _ Super-comfortable 3-11 screenshot" alt="A screenshot from YouTube channel John's Projects, showing an adapter to use a Nintendo Wii Nunchuck in Davinci Resolve" src="https://cdn.mos.cms.futurecdn.net/YR2iY4Q24bsXiUhkp4YTcN.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: John's Projects)</span></figcaption></figure><p>Their current shortcut controls are: </p><ul><li>Lower end pushbutton = Split clip</li><li>Upper end pushbutton = Not assigned yet (i.e. spare)</li><li>Joystick-LEFT = Ripple Delete</li><li>Joystick-RIGHT = UNDO (the previous action)</li></ul><p>The Nunchuck plugged into the Anavi Handle won't work as a macropad immediately. It does require some coding, but Dingley has gone over that process in his video, too. </p><p>The use of the Nunchuck specifically came about because Dingley realised they didn't actually use all the buttons on their standard macropad. They still have a keyboard on hand for typing text, but the Nunchuck means they can put the macropad away. </p><p>Admittedly, this use case is a little niche. The reason one might opt for professional equipment like the <a href="https://www.blackmagicdesign.com/uk/store/davinci-resolve-and-fusion/edit-keyboards/W-DRE-13" target="_blank">DaVinci Speed Editor</a> is partly due to the breadth of buttons available. The Nunchuk has a limited number of functions, so it will only really be useful to someone who only finds themselves needing a handful of functions for each edit. </p><p>But still, if you just want to cut clips, undo mistakes, and swap between a few tools quickly, it seems like a smart way of doing so, and it looks pretty neat at the same time. I'm sold. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-humble-wii-nunchuck-has-been-turned-into-a-video-editing-tool-because-its-one-of-the-most-ergonomic-things-ever-made/</link>
                                                                            <description>
                            <![CDATA[ What a wonderfully geeky way to edit. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">G78WN6md92qXsDCe4C6np3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yrsCtrg6nZxvhqkpy4PQZE-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 07 Aug 2026 14:43:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/yrsCtrg6nZxvhqkpy4PQZE-1280-80.png">
                                                            <media:credit><![CDATA[John&#039;s Projects]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot from YouTube channel John&#039;s Projects, using a Nintendo Wii Nunchuck in Davinci Resolve]]></media:description>                                                            <media:text><![CDATA[A screenshot from YouTube channel John&#039;s Projects, using a Nintendo Wii Nunchuck in Davinci Resolve]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot from YouTube channel John&#039;s Projects, using a Nintendo Wii Nunchuck in Davinci Resolve]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yrsCtrg6nZxvhqkpy4PQZE-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jMN4zio32E0" allowfullscreen></iframe></div></div><p>If you spend your time editing videos, you may have already invested in a macropad. Or, you're probably used to the monotony of spamming shortcuts on your keyboard to swap between different tools. This can be a pain on the wrist because of the angle you hover over a keyboard, but there's now a new way around it—the humble Nintendo Wii Nunchuk.</p><p>As spotted by <a href="https://hackaday.com/2026/08/07/wrist-welcomes-wii-nunchuk-as-gloriously-ergonomic-macropad/" target="_blank">Hackaday</a>, John Dingley, of YouTube account <a href="https://www.youtube.com/watch?v=jMN4zio32E0" target="_blank">John's Projects</a>, posted their latest creation last week. In essence, they've hooked a Wii Nunchuk up to their PC using the <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> to use it like a macropad.</p><p>The <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> is an open-source USB adapter for connecting the Nunchuk controller to a computer. The adapter uses the <a href="https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html?utm_source=github&utm_medium=ANAVI&utm_campaign=Handle" target="_blank">Seeed Studio Xiao RP2040</a>, which, at just a couple of dollars, makes the entire setup surprisingly cheap.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>You might be wondering why they used the Nunchuk, and it's not just to be a little geeky.  The Wii Nunchuk is comfortable and light, as it was designed for a family-friendly console. And most importantly, you can hold it upright. </p><p>For a video editor who is likely spending hours at their desk at a time, the hope is that it won't cause pain in their wrist from holding it on the desk all day. John claims it is "super comfortable" and that it is "one of the most ergonomic things ever made".</p><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="YR2iY4Q24bsXiUhkp4YTcN" name="Wii Nunchuck as DaVinci Resolve Macro-Pad _ Super-comfortable 3-11 screenshot" alt="A screenshot from YouTube channel John's Projects, showing an adapter to use a Nintendo Wii Nunchuck in Davinci Resolve" src="https://cdn.mos.cms.futurecdn.net/YR2iY4Q24bsXiUhkp4YTcN.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: John's Projects)</span></figcaption></figure><p>Their current shortcut controls are: </p><ul><li>Lower end pushbutton = Split clip</li><li>Upper end pushbutton = Not assigned yet (i.e. spare)</li><li>Joystick-LEFT = Ripple Delete</li><li>Joystick-RIGHT = UNDO (the previous action)</li></ul><p>The Nunchuck plugged into the Anavi Handle won't work as a macropad immediately. It does require some coding, but Dingley has gone over that process in his video, too. </p><p>The use of the Nunchuck specifically came about because Dingley realised they didn't actually use all the buttons on their standard macropad. They still have a keyboard on hand for typing text, but the Nunchuck means they can put the macropad away. </p><p>Admittedly, this use case is a little niche. The reason one might opt for professional equipment like the <a href="https://www.blackmagicdesign.com/uk/store/davinci-resolve-and-fusion/edit-keyboards/W-DRE-13" target="_blank">DaVinci Speed Editor</a> is partly due to the breadth of buttons available. The Nunchuk has a limited number of functions, so it will only really be useful to someone who only finds themselves needing a handful of functions for each edit. </p><p>But still, if you just want to cut clips, undo mistakes, and swap between a few tools quickly, it seems like a smart way of doing so, and it looks pretty neat at the same time. I'm sold. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve explains clever shortcut for the Steam Controller's Grip Sense, and I'm starting to think it's a killer feature ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> has a pretty niche feature called Grip Sense, which is a pair of capacitive touch sensors inside the handles that can sense when you are touching them. Though you may not use it, Valve thinks you should, "because it's, like, cool," and even recommends a couple of sweet shortcuts to use with it. </p><p><a href="https://store.steampowered.com/news/collection/steam/?emclan=103582791475000432&emgid=702141807556822237" target="_blank">Valve notes</a> that you could turn gyro controls off and on, depending on how your fingers sit on the controller, and it points out that the activation threshold is adjustable. That means you could activate a shortcut with only a slight lift of the fingers, or by taking the whole hand off the controller. </p><p>Activating and deactivating gyro controls to recenter your hand is apparently called "ratcheting". Valve likens it to picking up your mouse when it hits the end of your mousepad. Effectively, if your body or hands are at an uncomfortable angle, you can take your hand off the controller to turn off gyro controls, recenter your body and turn them back on again. It's a neat function, and one I wish I had while playing Splatoon Raiders on the <a href="https://www.pcgamer.com/hardware/nintendo-switch-2-review/" target="_blank">Nintendo Switch 2</a> recently (that has a recenter, but it's less natural with a dedicated button).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>Valve says, "While the original intent was for ratcheting (and it does work for that!) we have found a few other cool use cases, like using it to bring up a weapon wheel, map, or menu."</p><p>In the weapon wheel example, lifting your fingers from the rear of the controller brings up the wheel, allowing you to select your weapon or whatever, and then place your fingers back down to lock in your choice. </p><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="gRJaCxjyjzDp6EwU3RkV" name="steam-controller-02" 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/gRJaCxjyjzDp6EwU3RkV.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 you have your hands on a Steam Controller, and you're wondering how to assign your Grip Sense to Gyro:</p><ul><li>Go to the layout editor in Steam</li><li>Turn on the "Gyro To Mouse" option</li><li>Click the button selector</li><li>Select Grip Sense</li></ul><p>The same process works for assigning other functions. You just need to set your keybind to "Press and Hold", so that, when you take your fingers off the controller, it holds the menu button or whatever else. </p><p>You could set Grip Sense without a hold, for jumping or shooting, for example, but that seems quite inefficient to me. You can even adjust Grip Sense sensitivity if you find the controls a little hard to hit. Personally, if I were lucky enough to have got my hands on the Steam Controller, I'd be using this feature straightaway. And with a little practice, it could make gyro adjusting feel more natural.  </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/valve-explains-clever-shortcut-for-the-steam-controllers-grip-sense-and-im-starting-to-think-its-a-killer-feature/</link>
                                                                            <description>
                            <![CDATA[ This seems like a solid feature for the gyro heads. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RxdYJefTec5FqwgnqNvrAh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/L8JxGPmwD479ht6QSrmY4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 06 Aug 2026 11:37:10 +0000</pubDate>                                                                                                                                <updated>Thu, 06 Aug 2026 22:54:06 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/L8JxGPmwD479ht6QSrmY4-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/L8JxGPmwD479ht6QSrmY4-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 a pretty niche feature called Grip Sense, which is a pair of capacitive touch sensors inside the handles that can sense when you are touching them. Though you may not use it, Valve thinks you should, "because it's, like, cool," and even recommends a couple of sweet shortcuts to use with it. </p><p><a href="https://store.steampowered.com/news/collection/steam/?emclan=103582791475000432&emgid=702141807556822237" target="_blank">Valve notes</a> that you could turn gyro controls off and on, depending on how your fingers sit on the controller, and it points out that the activation threshold is adjustable. That means you could activate a shortcut with only a slight lift of the fingers, or by taking the whole hand off the controller. </p><p>Activating and deactivating gyro controls to recenter your hand is apparently called "ratcheting". Valve likens it to picking up your mouse when it hits the end of your mousepad. Effectively, if your body or hands are at an uncomfortable angle, you can take your hand off the controller to turn off gyro controls, recenter your body and turn them back on again. It's a neat function, and one I wish I had while playing Splatoon Raiders on the <a href="https://www.pcgamer.com/hardware/nintendo-switch-2-review/" target="_blank">Nintendo Switch 2</a> recently (that has a recenter, but it's less natural with a dedicated button).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>Valve says, "While the original intent was for ratcheting (and it does work for that!) we have found a few other cool use cases, like using it to bring up a weapon wheel, map, or menu."</p><p>In the weapon wheel example, lifting your fingers from the rear of the controller brings up the wheel, allowing you to select your weapon or whatever, and then place your fingers back down to lock in your choice. </p><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="gRJaCxjyjzDp6EwU3RkV" name="steam-controller-02" 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/gRJaCxjyjzDp6EwU3RkV.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 you have your hands on a Steam Controller, and you're wondering how to assign your Grip Sense to Gyro:</p><ul><li>Go to the layout editor in Steam</li><li>Turn on the "Gyro To Mouse" option</li><li>Click the button selector</li><li>Select Grip Sense</li></ul><p>The same process works for assigning other functions. You just need to set your keybind to "Press and Hold", so that, when you take your fingers off the controller, it holds the menu button or whatever else. </p><p>You could set Grip Sense without a hold, for jumping or shooting, for example, but that seems quite inefficient to me. You can even adjust Grip Sense sensitivity if you find the controls a little hard to hit. Personally, if I were lucky enough to have got my hands on the Steam Controller, I'd be using this feature straightaway. And with a little practice, it could make gyro adjusting feel more natural.  </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Sometimes you have to take a break from work to pay respects to the PC flight stick that ruled the '90s ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Growing up in the '90s, good joysticks were strangely hard to come by. The stiff sticks on my local arcade cabinets, already inferior to their Japanese counterparts, always seemed to be so worn down that I'd have to smash them from edge-to-edge just to register an input. And yet the sticks attached to my friend's dusty Atari 2600, discovered in a box of his parents' old junk, still managed to make the arcade cabinet sticks look good. Those things were so atrocious it's a wonder videogames ever took off to begin with.</p><p>The Nintendo 64's analogue stick controller seemed like a marvel, at first—it was responsive, granular, and ushered in a whole era of 3D games. It also went to shit after a few months of use—I probably owned eight of those controllers over the console's lifetime and destroyed every one. There was only one joystick that never failed me: the beige and black, nondescript PC accessory my dad brought home one day, likely a hand-me-down from one of his computer geek friends.</p><p>As far as I was concerned, I was a real pilot when I grabbed that stick to <a href="https://www.pcgamer.com/what-was-the-first-pc-game-you-played/">boot up a game like LHX Attack Chopper</a>. Nevermind that a real cockpit has a million buttons and switches, rather than just the trigger and the singular cute lil red button on top (for launching missiles, obviously). The branding was as simplistic as the design: it just said "FlightStick" on it.</p><p>I had no idea that the stick belonged to a decades-spanning lineage until I was digging through the very first issue of PC Gamer US—from May 1994—and came across this ad.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1602px;"><p class="vanilla-image-block" style="padding-top:137.33%;"><img id="r9VfDXVLH49HBkoUKZgv3A" name="PC Gamer Issue 001 (May-June 1994) page 035" alt="CH Products FlightStick Pro ad from PC Gamer magazine" src="https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A.jpg" mos="" align="middle" fullscreen="1" width="1602" height="2200" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">FlightStick Pro ad from PC Gamer magazine #1 (US, May 1994) </span><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>There it is, bottom right! That's my stick! </p><p>CH Products, it turns out, was a family business dating back to the 1970s, and was one of the go-to brands for flight enthusiasts throughout the late '80s and '90s. Their simpler designs—and connectivity options that gradually disappeared from desktop PCs—seemed to fall out of favor by the 2000s, as competitors like Thrustmaster, Saitek and Logitech made increasingly complex HOTAS setups. But Google them today and you'll still find loads of flight enthusiasts speaking about CH Products' rock-solid build quality (one of their later magazine ads even brags "We don't BREAK for anything!).</p><p>Go searching and you'll also find <a href="https://www.reddit.com/r/hotas/comments/1rnosb0/comment/oyi0fzg/?context=3">a Reddit thread</a> where the grandchild of founder Chuck Hayes complains that her mother convinced him to sell the family business, which is why CH Products is no longer around today, even though its website remarkably <a href="https://www.chproducts.com/13-28464-Home.php.html">remains online</a>.</p><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:139.14%;"><img id="NN6dbsXKrb9b4Lc5zHvhe4" name="ch products flightstick pro" alt="CH Products FlightStick Pro ad" src="https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4.jpg" mos="" align="right" fullscreen="1" width="1280" height="1781" attribution="" endorsement="" class="pull-rightinline expandable"><a href='https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>I had no idea what company made the stick back then, or that the CH FlightStick was actually a little older than me—the first model came out in 1987. "At the time of launch flight simulators on the PC were huge, and this peripheral was an incredibly realistic-looking analog joystick," writes the creator of <a href="https://dosdays.co.uk/topics/Manufacturers/chproducts.php">DOS Days</a>.</p><p>As quaint as the thing looks today compared to the <a href="https://www.pcgamer.com/the-best-pc-joysticks/">best PC joysticks</a>, it really did fly circles around all the console and arcade joysticks I used around the same time.</p><p>PC Gamer's Andy Chalk swears he still has the CH Products FlightStick Pro in a closet somewhere, though sadly it's no longer easily usable without a <a href="https://en.wikipedia.org/wiki/Game_port">game port</a> adapter. But he swears it was great in its heyday:</p><p>Despite how much I loved the FlightStick, I don't remember it staying connected to our PC for long.</p><div  class="fancy-box"><div class="fancy_box-title">From the archives</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="gsFSD7gWxvTQDJ8qUfpHpU" name="PC Gamer Issue 001 (May-June 1994) page 000" caption="" alt="PC Gamer US issue #1 (May 1994)" src="https://cdn.mos.cms.futurecdn.net/gsFSD7gWxvTQDJ8qUfpHpU.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">The ad that inspired this article was originally published in <strong>PC Gamer #1 (US, May 1994)</strong>.</p><p class="fancy-box__body-text">You can still <a data-analytics-id="inline-link" href="https://www.magazinesdirect.com/pcg-brandsite" target="_blank">subscribe to PC Gamer</a> to get new issues of the magazine (in print!) every month.</p></div></div><p>I think I only played a few games with it before it moved to its permanent home in a box somewhere in our office—either because my dad's new Pentium PC lacked the relevant port, or more likely because I became obsessed with real-time strategy games like Command & Conquer and didn't have much more use for the joystick. That seems more likely, considering the Thrustmaster HOTAS I bought <a href="https://www.pcgamer.com/star-wars-squadrons-review/">for Star Wars: Squadrons</a> has only come out of its drawer once in the six years since I reviewed that game.</p><p>These days I take for granted that a game controller is going to have nice-feeling analog sticks on it, even if they aren't using fancy <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/">Hall effect</a> or (even better) <a href="https://www.pcgamer.com/hardware/forget-what-you-heard-theres-plenty-of-pc-hardware-to-be-excited-about-in-2026/">tunnel magnetoresistance</a> tech. But 30 years ago, the humble FlightStick was as good as it got. As far as I knew, at least.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/sometimes-you-have-to-take-a-break-from-work-to-pay-respects-to-the-pc-flight-stick-that-ruled-the-90s/</link>
                                                                            <description>
                            <![CDATA[ It may not look like much now, but the CH Products FlightStick was a champion in its day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Eg4L2pXujaKyHt6sajs7v9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YfuokeHURR8JwJwvTW5QQf-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 04 Aug 2026 19:42:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oLoGHTuSZDFZX6QdzCTj4R.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Wes has been covering games and hardware for more than 10 years, first at tech sites like The Wirecutter and Tested before joining the PC Gamer team in 2014. Wes plays a little bit of everything, but he&#039;ll always jump at the chance to cover emulation and Japanese games.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not obsessively optimizing and re-optimizing a tangle of conveyor belts in Satisfactory (it&#039;s really becoming a problem), he&#039;s probably playing a 20-year-old Final Fantasy or some opaque ASCII roguelike. With a focus on writing and editing features, he seeks out personal stories and in-depth histories from the corners of PC gaming and its niche communities. 50% pizza by volume (deep dish, to be specific).&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;His lasting legacy on this earth may be &lt;a href=&quot;https://www.pcgamer.com/ive-somehow-been-wasding-wrong-my-whole-life/&quot; target=&quot;_blank&quot;&gt;using WASD wrong&lt;/a&gt; for his entire life.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/YfuokeHURR8JwJwvTW5QQf-1280-80.jpg">
                                                            <media:credit><![CDATA[DOSDays.co.uk, CH Products]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Photo of the FlightStick joystick in box]]></media:description>                                                            <media:text><![CDATA[Photo of the FlightStick joystick in box]]></media:text>
                                <media:title type="plain"><![CDATA[Photo of the FlightStick joystick in box]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YfuokeHURR8JwJwvTW5QQf-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Growing up in the '90s, good joysticks were strangely hard to come by. The stiff sticks on my local arcade cabinets, already inferior to their Japanese counterparts, always seemed to be so worn down that I'd have to smash them from edge-to-edge just to register an input. And yet the sticks attached to my friend's dusty Atari 2600, discovered in a box of his parents' old junk, still managed to make the arcade cabinet sticks look good. Those things were so atrocious it's a wonder videogames ever took off to begin with.</p><p>The Nintendo 64's analogue stick controller seemed like a marvel, at first—it was responsive, granular, and ushered in a whole era of 3D games. It also went to shit after a few months of use—I probably owned eight of those controllers over the console's lifetime and destroyed every one. There was only one joystick that never failed me: the beige and black, nondescript PC accessory my dad brought home one day, likely a hand-me-down from one of his computer geek friends.</p><p>As far as I was concerned, I was a real pilot when I grabbed that stick to <a href="https://www.pcgamer.com/what-was-the-first-pc-game-you-played/">boot up a game like LHX Attack Chopper</a>. Nevermind that a real cockpit has a million buttons and switches, rather than just the trigger and the singular cute lil red button on top (for launching missiles, obviously). The branding was as simplistic as the design: it just said "FlightStick" on it.</p><p>I had no idea that the stick belonged to a decades-spanning lineage until I was digging through the very first issue of PC Gamer US—from May 1994—and came across this ad.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1602px;"><p class="vanilla-image-block" style="padding-top:137.33%;"><img id="r9VfDXVLH49HBkoUKZgv3A" name="PC Gamer Issue 001 (May-June 1994) page 035" alt="CH Products FlightStick Pro ad from PC Gamer magazine" src="https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A.jpg" mos="" align="middle" fullscreen="1" width="1602" height="2200" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">FlightStick Pro ad from PC Gamer magazine #1 (US, May 1994) </span><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>There it is, bottom right! That's my stick! </p><p>CH Products, it turns out, was a family business dating back to the 1970s, and was one of the go-to brands for flight enthusiasts throughout the late '80s and '90s. Their simpler designs—and connectivity options that gradually disappeared from desktop PCs—seemed to fall out of favor by the 2000s, as competitors like Thrustmaster, Saitek and Logitech made increasingly complex HOTAS setups. But Google them today and you'll still find loads of flight enthusiasts speaking about CH Products' rock-solid build quality (one of their later magazine ads even brags "We don't BREAK for anything!).</p><p>Go searching and you'll also find <a href="https://www.reddit.com/r/hotas/comments/1rnosb0/comment/oyi0fzg/?context=3">a Reddit thread</a> where the grandchild of founder Chuck Hayes complains that her mother convinced him to sell the family business, which is why CH Products is no longer around today, even though its website remarkably <a href="https://www.chproducts.com/13-28464-Home.php.html">remains online</a>.</p><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:139.14%;"><img id="NN6dbsXKrb9b4Lc5zHvhe4" name="ch products flightstick pro" alt="CH Products FlightStick Pro ad" src="https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4.jpg" mos="" align="right" fullscreen="1" width="1280" height="1781" attribution="" endorsement="" class="pull-rightinline expandable"><a href='https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>I had no idea what company made the stick back then, or that the CH FlightStick was actually a little older than me—the first model came out in 1987. "At the time of launch flight simulators on the PC were huge, and this peripheral was an incredibly realistic-looking analog joystick," writes the creator of <a href="https://dosdays.co.uk/topics/Manufacturers/chproducts.php">DOS Days</a>.</p><p>As quaint as the thing looks today compared to the <a href="https://www.pcgamer.com/the-best-pc-joysticks/">best PC joysticks</a>, it really did fly circles around all the console and arcade joysticks I used around the same time.</p><p>PC Gamer's Andy Chalk swears he still has the CH Products FlightStick Pro in a closet somewhere, though sadly it's no longer easily usable without a <a href="https://en.wikipedia.org/wiki/Game_port">game port</a> adapter. But he swears it was great in its heyday:</p><p>Despite how much I loved the FlightStick, I don't remember it staying connected to our PC for long.</p><div  class="fancy-box"><div class="fancy_box-title">From the archives</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="gsFSD7gWxvTQDJ8qUfpHpU" name="PC Gamer Issue 001 (May-June 1994) page 000" caption="" alt="PC Gamer US issue #1 (May 1994)" src="https://cdn.mos.cms.futurecdn.net/gsFSD7gWxvTQDJ8qUfpHpU.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">The ad that inspired this article was originally published in <strong>PC Gamer #1 (US, May 1994)</strong>.</p><p class="fancy-box__body-text">You can still <a data-analytics-id="inline-link" href="https://www.magazinesdirect.com/pcg-brandsite" target="_blank">subscribe to PC Gamer</a> to get new issues of the magazine (in print!) every month.</p></div></div><p>I think I only played a few games with it before it moved to its permanent home in a box somewhere in our office—either because my dad's new Pentium PC lacked the relevant port, or more likely because I became obsessed with real-time strategy games like Command & Conquer and didn't have much more use for the joystick. That seems more likely, considering the Thrustmaster HOTAS I bought <a href="https://www.pcgamer.com/star-wars-squadrons-review/">for Star Wars: Squadrons</a> has only come out of its drawer once in the six years since I reviewed that game.</p><p>These days I take for granted that a game controller is going to have nice-feeling analog sticks on it, even if they aren't using fancy <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/">Hall effect</a> or (even better) <a href="https://www.pcgamer.com/hardware/forget-what-you-heard-theres-plenty-of-pc-hardware-to-be-excited-about-in-2026/">tunnel magnetoresistance</a> tech. But 30 years ago, the humble FlightStick was as good as it got. As far as I knew, at least.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Lick your way to victory with the Mouth Pad, a Bluetooth device that lets you control your PC with just your tongue ]]></title>
                                                                                                <dc:content><![CDATA[ <p>PC gaming isn't always the most inclusive space. Besides the high price of everything from components to games, standard gaming peripherals such as a keyboard and mouse can exclude lots of folks with limited mobility. An expanding array of assistive devices is attempting to bridge that gap.</p><p><a href="https://www.augmental.tech/" target="_blank">Augmental</a> describes itself as a company specialising in 'Skinware,' "body-coupled interfaces that let people control computers, communicate, and interact with AI without relying on their hands." Its latest project is the Mouth Pad, a custom-fit mouthpiece that allows users to control PCs, tablets, and phones with just their tongue. The device is now available to purchase in the US and, yes, you can absolutely game with it.</p><p><a href="https://x.com/augmentaltech/status/2079961051383410784?s=20" target="_blank">The Mouth Pad</a> looks like the top half of a retainer, with flexible circuits encased inside custom 3D printed dental resin. <a href="https://www.pcgamer.com/this-computer-interface-you-wear-like-a-mustache-will-let-you-open-doors-and-play-games-with-your-lips/" target="_blank">Mouth-based physical interfaces are nothing new in the assistive tech space</a>, and mouth-operated pens are already used by gamers with physical disabilities. Rather than bashing your teeth against a physical joystick, Mouth Pad users can instead either run their tongue over the trackpad covering the roof of their mouth, or engage a head tracking mode in order to register inputs. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Augmental CEO Tomás Vega was originally interested in creating a brain-machine interface, though an internship at <a href="https://www.pcgamer.com/games/world-of-warcraft/neuralink-patient-raiding-in-world-of-warcraft-after-only-100-days-of-having-the-implant-installed-calls-it-pure-magic-exploring-azeroth-hands-free-at-full-speed/" target="_blank">Neuralink</a> changed his mind. <a href="https://news.mit.edu/2024/mouth-based-touchpad-augmental-0605" target="_blank">He told MIT News back in 2024</a>, "A brain implant has the highest potential for helping people in the future, but I saw a number of limitations that pushed me from working on it right now. One is the long timeline for development. I’ve made so many friends over the past years that needed a solution yesterday.”</p><p>Vega first built a version of the Mouth Pad during his final semester at MIT in 2019—he describes that prototype as "a lollipop with a bunch of sensors." Since then, he has founded startup Augmental alongside Corten Singer, and the pair have worked with about 100 early access users to refine the design. <a href="https://www.pcgamer.com/totally-game-meet-the-call-of-duty-streamer-who-plays-using-his-mouth/" target="_blank">RockyNoHands</a>, a streamer known for racking up Call of Duty kills with just his mouth, is one such early access user.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2079961051383410784"><p lang="en" dir="ltr">MouthPad is a touchpad you drive with your tongue.Now available across the US. pic.twitter.com/n8Gvq2Y37Q<a href="https://twitter.com/cantworkitout/status/2079961051383410784">July 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The current iteration of the Mouth Pad connects over Bluetooth like a wireless mouse, and holds about seven hours of charge. As far as wireless gaming mice go, that's not the greatest battery life, and the device takes about one and a half hours to fully charge. Clicking is registered by pressing the tongue tip into the palate, while right-clicks are registered via 'sucking or sipping' gestures. Click and drag motions are also possible.</p><p>The main barrier is unfortunately still the price, with the assistive device costing $1,400 (though there's also a bundle that includes a second Mouth Pad for $1,900). The device is not yet FDA approved, so insurance reimbursements are still a ways off as a result. Considering the Mouth Pad has the potential to genuinely better lives in spheres beyond gaming, (which is more than I can say for <a href="https://www.pcgamer.com/hardware/vr-hardware/would-you-like-to-taste-fish-soup-in-vr-me-neither-but-this-electronic-tongue-does-it-anyway/" target="_blank">some other tongue-based gaming devices I've seen</a>), here's hoping it becomes more affordable sooner rather than later.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/lick-your-way-to-victory-with-the-mouth-pad-a-bluetooth-device-that-lets-you-control-your-pc-with-just-your-tongue/</link>
                                                                            <description>
                            <![CDATA[ An early prototype looked like 'a lollipop with a bunch of sensors.' ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yKSEWvzoqtL69XXVgpbDeM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ET7KztpLvdCi7gWLZauEr5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Jul 2026 12:39:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ET7KztpLvdCi7gWLZauEr5-1280-80.jpg">
                                                            <media:credit><![CDATA[Augmental]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The top half of a retainer, with a flexible copper circuit encased inside the dental resin. A small power pack is attached on the right-hand side.]]></media:description>                                                            <media:text><![CDATA[The top half of a retainer, with a flexible copper circuit encased inside the dental resin. A small power pack is attached on the right-hand side.]]></media:text>
                                <media:title type="plain"><![CDATA[The top half of a retainer, with a flexible copper circuit encased inside the dental resin. A small power pack is attached on the right-hand side.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ET7KztpLvdCi7gWLZauEr5-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>PC gaming isn't always the most inclusive space. Besides the high price of everything from components to games, standard gaming peripherals such as a keyboard and mouse can exclude lots of folks with limited mobility. An expanding array of assistive devices is attempting to bridge that gap.</p><p><a href="https://www.augmental.tech/" target="_blank">Augmental</a> describes itself as a company specialising in 'Skinware,' "body-coupled interfaces that let people control computers, communicate, and interact with AI without relying on their hands." Its latest project is the Mouth Pad, a custom-fit mouthpiece that allows users to control PCs, tablets, and phones with just their tongue. The device is now available to purchase in the US and, yes, you can absolutely game with it.</p><p><a href="https://x.com/augmentaltech/status/2079961051383410784?s=20" target="_blank">The Mouth Pad</a> looks like the top half of a retainer, with flexible circuits encased inside custom 3D printed dental resin. <a href="https://www.pcgamer.com/this-computer-interface-you-wear-like-a-mustache-will-let-you-open-doors-and-play-games-with-your-lips/" target="_blank">Mouth-based physical interfaces are nothing new in the assistive tech space</a>, and mouth-operated pens are already used by gamers with physical disabilities. Rather than bashing your teeth against a physical joystick, Mouth Pad users can instead either run their tongue over the trackpad covering the roof of their mouth, or engage a head tracking mode in order to register inputs. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Augmental CEO Tomás Vega was originally interested in creating a brain-machine interface, though an internship at <a href="https://www.pcgamer.com/games/world-of-warcraft/neuralink-patient-raiding-in-world-of-warcraft-after-only-100-days-of-having-the-implant-installed-calls-it-pure-magic-exploring-azeroth-hands-free-at-full-speed/" target="_blank">Neuralink</a> changed his mind. <a href="https://news.mit.edu/2024/mouth-based-touchpad-augmental-0605" target="_blank">He told MIT News back in 2024</a>, "A brain implant has the highest potential for helping people in the future, but I saw a number of limitations that pushed me from working on it right now. One is the long timeline for development. I’ve made so many friends over the past years that needed a solution yesterday.”</p><p>Vega first built a version of the Mouth Pad during his final semester at MIT in 2019—he describes that prototype as "a lollipop with a bunch of sensors." Since then, he has founded startup Augmental alongside Corten Singer, and the pair have worked with about 100 early access users to refine the design. <a href="https://www.pcgamer.com/totally-game-meet-the-call-of-duty-streamer-who-plays-using-his-mouth/" target="_blank">RockyNoHands</a>, a streamer known for racking up Call of Duty kills with just his mouth, is one such early access user.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2079961051383410784"><p lang="en" dir="ltr">MouthPad is a touchpad you drive with your tongue.Now available across the US. pic.twitter.com/n8Gvq2Y37Q<a href="https://twitter.com/cantworkitout/status/2079961051383410784">July 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The current iteration of the Mouth Pad connects over Bluetooth like a wireless mouse, and holds about seven hours of charge. As far as wireless gaming mice go, that's not the greatest battery life, and the device takes about one and a half hours to fully charge. Clicking is registered by pressing the tongue tip into the palate, while right-clicks are registered via 'sucking or sipping' gestures. Click and drag motions are also possible.</p><p>The main barrier is unfortunately still the price, with the assistive device costing $1,400 (though there's also a bundle that includes a second Mouth Pad for $1,900). The device is not yet FDA approved, so insurance reimbursements are still a ways off as a result. Considering the Mouth Pad has the potential to genuinely better lives in spheres beyond gaming, (which is more than I can say for <a href="https://www.pcgamer.com/hardware/vr-hardware/would-you-like-to-taste-fish-soup-in-vr-me-neither-but-this-electronic-tongue-does-it-anyway/" target="_blank">some other tongue-based gaming devices I've seen</a>), here's hoping it becomes more affordable sooner rather than later.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This DIY 'OpenPuck' project allows the Steam Controller to emulate Xbox, Switch, and PlayStation controllers, but no wireless charging for you ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-review-2026/" target="_blank">Steam Machine</a> might have turned out to be a disappointment (mostly down to its price), but the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> remains a very useful thing. </p><p>Should you be the tinkering sort, the <a href="https://github.com/safijari/openpuck" target="_blank">OpenPuck</a> project doubles down on the Steam Controller's Swiss Army Knife-like tendencies, allowing it to emulate Xbox, Nintendo Switch, and PlayStation controllers.</p><p>The OpenPuck is the work of Github user <a href="https://github.com/safijari" target="_blank">safijari</a>, and the project is based around a Pro Micro NRF52840 board. This $8 device can be flashed to emulate the Steam Controller's regular wireless puck, and translates the controller inputs to their console equivalents while also enabling Steam-specific features (via <a href="https://hackaday.com/2026/07/13/diy-steam-controller-puck-offers-xbox-switch-playstation-emulation-modes/" target="_blank">Hackaday</a>). </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>Although safijari says "the Switch and PS3 modes have been verified to work on real consoles," so your mileage may vary. By the looks of the project's page on Github, DualSense emulation is currently supported for PC only, and there are various caveats for emulation support to consider for each potential mode.</p><p>Pairing involves connecting the board and the Steam Controller to a PC with a USB Type-C cable and flashing the microcontroller, after which the controller itself can be wirelessly connected.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1748px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="4W8Zf792fxGfo6RPeqnLVd" name="1784045961.jpg" alt="OpenPuck microcontroller" src="https://cdn.mos.cms.futurecdn.net/4W8Zf792fxGfo6RPeqnLVd.jpg" mos="" align="middle" fullscreen="" width="1748" height="984" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: safijari)</span></figcaption></figure><p>"At any point you can hold all four back buttons and press X to switch over to Xbox mode which maps all canonical inputs to their expected counterparts," safijari confirms. "In this mode the right trackpad acts as a mouse, but at present this only works in Android and SteamOS."</p><p>Holding the back four buttons and Y switches to, err, Switch mode (with gyro and haptic support), whereas the same buttons + B puts it in "Lizard" mode, where the Steam Controller behaves as it does when Steam is closed—while it's still open.  </p><p>"This has a few advantages," says safijari. "The biggest one being that you can use inputs when a high privilege application is in the foreground (like the Task Manager, when using Steam if you wanna be able to do that Steam must be run as admin)."</p><p>The project seems to be a work in progress, and the author warns that "Every part of this project <em>HEAVILY</em> used LLMs," so take that for what it's worth. Should you wish for a chassis to contain the puck properly, you'll also need to 3D print one for yourself—with <a href="https://github.com/safijari/openpuck#:~:text=to%20swap%20slots.-,3D%20Printed%20Cases,-jaki%2Dgh%20has" target="_blank">several options</a> offered.</p><p>Unfortunately, the OpenPuck isn't capable of charging your Steam Controller like the regular puck, as it lacks any pins. Otherwise, though, it seems to be a multi-talented little marvel. </p><p>As part of this project, safijari also includes reference to ReversePuck, which is their way to emulate Steam Controller inputs (except the grip controls) on the Steam Deck in order to use it as one of the world's most expensive console pads. It's an <em>interesting </em>part of the project for sure.</p><p>I had a feeling Valve's new hardware would excite the imaginations of the maker community, and by the looks of things, they're already beavering away finding all sorts of uses for the latest Steam-branded offerings.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/this-diy-openpuck-project-allows-the-steam-controller-to-emulate-xbox-switch-and-playstation-controllers-but-no-wireless-charging-for-you/</link>
                                                                            <description>
                            <![CDATA[ Still, it's a perfectly practical puck in many respects. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZxiszMDgiXyztffzfh8x86</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 14 Jul 2026 16:23:43 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk next to its charging dock and a keyboard.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk next to its charging dock and a keyboard.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk next to its charging dock and a keyboard.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-review-2026/" target="_blank">Steam Machine</a> might have turned out to be a disappointment (mostly down to its price), but the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> remains a very useful thing. </p><p>Should you be the tinkering sort, the <a href="https://github.com/safijari/openpuck" target="_blank">OpenPuck</a> project doubles down on the Steam Controller's Swiss Army Knife-like tendencies, allowing it to emulate Xbox, Nintendo Switch, and PlayStation controllers.</p><p>The OpenPuck is the work of Github user <a href="https://github.com/safijari" target="_blank">safijari</a>, and the project is based around a Pro Micro NRF52840 board. This $8 device can be flashed to emulate the Steam Controller's regular wireless puck, and translates the controller inputs to their console equivalents while also enabling Steam-specific features (via <a href="https://hackaday.com/2026/07/13/diy-steam-controller-puck-offers-xbox-switch-playstation-emulation-modes/" target="_blank">Hackaday</a>). </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>Although safijari says "the Switch and PS3 modes have been verified to work on real consoles," so your mileage may vary. By the looks of the project's page on Github, DualSense emulation is currently supported for PC only, and there are various caveats for emulation support to consider for each potential mode.</p><p>Pairing involves connecting the board and the Steam Controller to a PC with a USB Type-C cable and flashing the microcontroller, after which the controller itself can be wirelessly connected.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1748px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="4W8Zf792fxGfo6RPeqnLVd" name="1784045961.jpg" alt="OpenPuck microcontroller" src="https://cdn.mos.cms.futurecdn.net/4W8Zf792fxGfo6RPeqnLVd.jpg" mos="" align="middle" fullscreen="" width="1748" height="984" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: safijari)</span></figcaption></figure><p>"At any point you can hold all four back buttons and press X to switch over to Xbox mode which maps all canonical inputs to their expected counterparts," safijari confirms. "In this mode the right trackpad acts as a mouse, but at present this only works in Android and SteamOS."</p><p>Holding the back four buttons and Y switches to, err, Switch mode (with gyro and haptic support), whereas the same buttons + B puts it in "Lizard" mode, where the Steam Controller behaves as it does when Steam is closed—while it's still open.  </p><p>"This has a few advantages," says safijari. "The biggest one being that you can use inputs when a high privilege application is in the foreground (like the Task Manager, when using Steam if you wanna be able to do that Steam must be run as admin)."</p><p>The project seems to be a work in progress, and the author warns that "Every part of this project <em>HEAVILY</em> used LLMs," so take that for what it's worth. Should you wish for a chassis to contain the puck properly, you'll also need to 3D print one for yourself—with <a href="https://github.com/safijari/openpuck#:~:text=to%20swap%20slots.-,3D%20Printed%20Cases,-jaki%2Dgh%20has" target="_blank">several options</a> offered.</p><p>Unfortunately, the OpenPuck isn't capable of charging your Steam Controller like the regular puck, as it lacks any pins. Otherwise, though, it seems to be a multi-talented little marvel. </p><p>As part of this project, safijari also includes reference to ReversePuck, which is their way to emulate Steam Controller inputs (except the grip controls) on the Steam Deck in order to use it as one of the world's most expensive console pads. It's an <em>interesting </em>part of the project for sure.</p><p>I had a feeling Valve's new hardware would excite the imaginations of the maker community, and by the looks of things, they're already beavering away finding all sorts of uses for the latest Steam-branded offerings.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Heaps of gamepads are discounted as part of Amazon Prime Day 2026, but there's only one I'd unreservedly recommend ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UVbtMi7RWf6F92uuq9xUzH" name="GameSir G7 Pro Controller with charging dock product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UVbtMi7RWf6F92uuq9xUzH.png" mos="" align="middle" fullscreen="" width="800" height="800" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller.</p><p>Also:<br><strong>GameSir G7 Pro Dragon's Dogma 2 Edition</strong> - <del>AU$179</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0GJZ8WJD9" target="_blank" rel="sponsored" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">AU$143.20</a><br><strong>GameSir G7 Pro Zenless Zone Zero Edition</strong> - <del>AU$239</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0G6DCNFDN" target="_blank" rel="sponsored">AU$191.20</a><a class="view-deal button" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">View Deal</a></p></div><p>While traditionally best for headsets, keyboards and mice, Amazon sales are increasingly the best opportunity to pick up PC-compatible gamepads for cheap. The market for gamepads and controllers is nowadays <em>very </em>competitive, mostly because the likes of Razer, 8BitDo, Turtle Beach and GameSir make good products, and not cheap and inferior alternatives to first-party console controllers like was the norm a decade ago.</p><p>Actually, most third-party gamepads are plainly better than the Xbox or PS5 controllers. Drift-free Hall effect analog sticks are nowadays <em>de riguer</em> for third-party controllers. Similarly, rear paddle buttons. They tend to be a tad pricier than the DualSense or the Xbox controller, but they also come with more buttons, more customisation, and technology that avoids rapid stick wear.</p><p>The GameSir G7 Pro is the best gamepad for PC gaming, full stop. It's right at the top of our list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers in 2026</a>, thanks to the way it makes all the most sought after "Pro" style trimmings affordable. </p><p>Here's what you're getting:</p><ul><li>Two rear paddle buttons</li><li>Two extra claw grip buttons</li><li>Trigger stops</li><li>Gyro support (!)</li><li>Three D-pad varieties</li><li>Charging base</li><li>1000Hz polling rate (versus the 126Hz polling rate in the Xbox controller!)</li><li>Wired, 2.4Ghz wireless, and Bluetooth connectivity</li><li>Ten hours battery</li><li>TMR drift free analog sticks</li></ul><p>On that final note: TMR is a more advanced anti-drift tech than Hall effect. I explain the workings behind it in my <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">review of the G7 Pro</a>, but basically: they're more precise, with a lower power draw.</p><p>The GameSir G7 Pro normally retails for AU$159, and when it's discounted, usually hovers around the AU$135 mark. This week, as part of Prime Day, Amazon is offering it <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="sponsored">for AU$127</a>. </p><p>If that's still too much to spend on a gamepad, GameSir's Nova Lite Wireless controller (PC Gamer's favourite budget wireless controller) is currently going cheap as well:</p><div class="product"><a data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">Nova Lite: was $45 now $32</a></strong><br>Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">View Deal</a></p></div><p>If neither of these suit, check out our list of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">best controllers for PC gaming</a>, or our exhaustive list of the <a href="https://www.pcgamer.com/hardware/live/news/prime-day-pc-gaming-deals-july-2026/">best Amazon Prime Day PC gaming deals</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/heaps-of-gamepads-are-discounted-as-part-of-amazon-prime-day-2026-but-theres-only-one-id-unreservedly-recommend/</link>
                                                                            <description>
                            <![CDATA[ Don't buy an inferior PC gamepad this Prime Day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oycGE7KbVjC7Nmyy4S4rRM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 07 Jul 2026 01:04:42 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg">
                                                            <media:credit><![CDATA[Gamesir, Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:description>                                                            <media:text><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:text>
                                <media:title type="plain"><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UVbtMi7RWf6F92uuq9xUzH" name="GameSir G7 Pro Controller with charging dock product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UVbtMi7RWf6F92uuq9xUzH.png" mos="" align="middle" fullscreen="" width="800" height="800" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller.</p><p>Also:<br><strong>GameSir G7 Pro Dragon's Dogma 2 Edition</strong> - <del>AU$179</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0GJZ8WJD9" target="_blank" rel="sponsored" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">AU$143.20</a><br><strong>GameSir G7 Pro Zenless Zone Zero Edition</strong> - <del>AU$239</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0G6DCNFDN" target="_blank" rel="sponsored">AU$191.20</a><a class="view-deal button" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">View Deal</a></p></div><p>While traditionally best for headsets, keyboards and mice, Amazon sales are increasingly the best opportunity to pick up PC-compatible gamepads for cheap. The market for gamepads and controllers is nowadays <em>very </em>competitive, mostly because the likes of Razer, 8BitDo, Turtle Beach and GameSir make good products, and not cheap and inferior alternatives to first-party console controllers like was the norm a decade ago.</p><p>Actually, most third-party gamepads are plainly better than the Xbox or PS5 controllers. Drift-free Hall effect analog sticks are nowadays <em>de riguer</em> for third-party controllers. Similarly, rear paddle buttons. They tend to be a tad pricier than the DualSense or the Xbox controller, but they also come with more buttons, more customisation, and technology that avoids rapid stick wear.</p><p>The GameSir G7 Pro is the best gamepad for PC gaming, full stop. It's right at the top of our list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers in 2026</a>, thanks to the way it makes all the most sought after "Pro" style trimmings affordable. </p><p>Here's what you're getting:</p><ul><li>Two rear paddle buttons</li><li>Two extra claw grip buttons</li><li>Trigger stops</li><li>Gyro support (!)</li><li>Three D-pad varieties</li><li>Charging base</li><li>1000Hz polling rate (versus the 126Hz polling rate in the Xbox controller!)</li><li>Wired, 2.4Ghz wireless, and Bluetooth connectivity</li><li>Ten hours battery</li><li>TMR drift free analog sticks</li></ul><p>On that final note: TMR is a more advanced anti-drift tech than Hall effect. I explain the workings behind it in my <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">review of the G7 Pro</a>, but basically: they're more precise, with a lower power draw.</p><p>The GameSir G7 Pro normally retails for AU$159, and when it's discounted, usually hovers around the AU$135 mark. This week, as part of Prime Day, Amazon is offering it <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="sponsored">for AU$127</a>. </p><p>If that's still too much to spend on a gamepad, GameSir's Nova Lite Wireless controller (PC Gamer's favourite budget wireless controller) is currently going cheap as well:</p><div class="product"><a data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">Nova Lite: was $45 now $32</a></strong><br>Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">View Deal</a></p></div><p>If neither of these suit, check out our list of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">best controllers for PC gaming</a>, or our exhaustive list of the <a href="https://www.pcgamer.com/hardware/live/news/prime-day-pc-gaming-deals-july-2026/">best Amazon Prime Day PC gaming deals</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A second OG Steam Controller prototype has been found at Goodwill ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Seven years ago, a user of the Steam Controller subreddit <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/steam_controller_chell_prototype_found_at_local/" target="_blank">found a prototype of the original Steam Controller at a local Goodwill</a>. Recently, in a strange bit of luck, a <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit/" target="_blank">second prototype has been found at Goodwill</a>. If one more pops up at the same chain, one must assume that Gabe Newell is simply dropping them off at Goodwills around America. It's the only rational assumption. </p><p>Taking to Reddit, user Waste-Set5032 shares that their dad happened upon the 'Chell' Steam Controller prototype at a Goodwill in Seattle. When one user ponders if the dad actually bought it, the <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/comment/ovm6i8v/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">dad steps in to confirm</a>. He says, "I thought about letting this go, but I know my son is a fan of everything Valve, so I picked it up. On top of that, I now know my son’s Reddit handle."</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit">Seven years ago, another member of this Subreddit found a Chell Prototype in a Goodwill. Well, would you look at this, it happened twice. My dad in Seattle found one.</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>The son in question is 14 and claims "finding things from Valve is like finding ancient relics for me". He also says, "I love playing their older games like Portal 2 and Half Life because it feels like a bygone era of gaming and I love exploring it." You're not alone if reading that makes you feel like you're crumbling into dust. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>The Chell Steam Controller prototype is believed to be from around 2013 or 2014, which means the prototype's new owner was around one or two years old when this prototype was created. It's got a fairly familiar design to those who know the <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">original Steam Controller</a>, with its inward curved shape and two big trackpads on either side.</p><p>It is, however, missing face buttons on the right-hand side, with these being scattered around the middle of the controller instead. The prototype also moves the Select and Start buttons to the bottom of the controller, and also misses out on any sort of thumbsticks. All of that is to say the prototype is even stranger than the 2015 model. </p><p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">2026 Steam Controller</a> launched just a few months ago and is altogether a much better device, though it still retains some of that Valve weirdness (complimentary), featuring two thumbsticks and two trackpads.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kXk5wqg7RoGSLDTWiXMuBZ.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The original poster's dad has managed to give the controller prototype a try and claims it "works as a generic controller". However, he notes that the four buttons in the middle of the pad actually work as a D-Pad, with the top left button being up, the top right button being right, the bottom left button being left, and the bottom right being down. </p><p>Given it's a prototype without the button layout and thumbsticks you'd expect from a modern controller, the Chell prototype likely isn't something you'd use for competitive gaming, but it's a neat relic of the past to have. It's also a sign of how far Valve has come with regard to controller ergonomics in the last decade. </p><p>Unfortunately, we don't know much more about the controller in regard to feel or compatibility. We also don't know how much was paid for it. However, the prototype found seven years ago was reportedly <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/comment/fb8uk8b/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">bought for $8</a>, which is <a href="https://www.pcgamer.com/hardware/i-bought-a-usd5-steam-controller-7-years-ago-and-forgot-it-existed-now-its-my-new-living-room-sidekick/" target="_blank">$3 more than the OG Steam Controller was selling for when it was discontinued</a>. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/a-second-og-steam-controller-prototype-has-been-found-at-goodwill/</link>
                                                                            <description>
                            <![CDATA[ We don't know how much it cost, but it does apparently work. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DfVEVHQzQgxWDTXXcEYQ34</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 12:08:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Seven years ago, a user of the Steam Controller subreddit <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/steam_controller_chell_prototype_found_at_local/" target="_blank">found a prototype of the original Steam Controller at a local Goodwill</a>. Recently, in a strange bit of luck, a <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit/" target="_blank">second prototype has been found at Goodwill</a>. If one more pops up at the same chain, one must assume that Gabe Newell is simply dropping them off at Goodwills around America. It's the only rational assumption. </p><p>Taking to Reddit, user Waste-Set5032 shares that their dad happened upon the 'Chell' Steam Controller prototype at a Goodwill in Seattle. When one user ponders if the dad actually bought it, the <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/comment/ovm6i8v/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">dad steps in to confirm</a>. He says, "I thought about letting this go, but I know my son is a fan of everything Valve, so I picked it up. On top of that, I now know my son’s Reddit handle."</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit">Seven years ago, another member of this Subreddit found a Chell Prototype in a Goodwill. Well, would you look at this, it happened twice. My dad in Seattle found one.</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>The son in question is 14 and claims "finding things from Valve is like finding ancient relics for me". He also says, "I love playing their older games like Portal 2 and Half Life because it feels like a bygone era of gaming and I love exploring it." You're not alone if reading that makes you feel like you're crumbling into dust. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>The Chell Steam Controller prototype is believed to be from around 2013 or 2014, which means the prototype's new owner was around one or two years old when this prototype was created. It's got a fairly familiar design to those who know the <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">original Steam Controller</a>, with its inward curved shape and two big trackpads on either side.</p><p>It is, however, missing face buttons on the right-hand side, with these being scattered around the middle of the controller instead. The prototype also moves the Select and Start buttons to the bottom of the controller, and also misses out on any sort of thumbsticks. All of that is to say the prototype is even stranger than the 2015 model. </p><p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">2026 Steam Controller</a> launched just a few months ago and is altogether a much better device, though it still retains some of that Valve weirdness (complimentary), featuring two thumbsticks and two trackpads.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kXk5wqg7RoGSLDTWiXMuBZ.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The original poster's dad has managed to give the controller prototype a try and claims it "works as a generic controller". However, he notes that the four buttons in the middle of the pad actually work as a D-Pad, with the top left button being up, the top right button being right, the bottom left button being left, and the bottom right being down. </p><p>Given it's a prototype without the button layout and thumbsticks you'd expect from a modern controller, the Chell prototype likely isn't something you'd use for competitive gaming, but it's a neat relic of the past to have. It's also a sign of how far Valve has come with regard to controller ergonomics in the last decade. </p><p>Unfortunately, we don't know much more about the controller in regard to feel or compatibility. We also don't know how much was paid for it. However, the prototype found seven years ago was reportedly <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/comment/fb8uk8b/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">bought for $8</a>, which is <a href="https://www.pcgamer.com/hardware/i-bought-a-usd5-steam-controller-7-years-ago-and-forgot-it-existed-now-its-my-new-living-room-sidekick/" target="_blank">$3 more than the OG Steam Controller was selling for when it was discontinued</a>. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The most satisfying controller I've ever used is on sale at its lowest ever price for Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <iframe src="https://content.jwplatform.com/players/J4ZqfFKo.html" id="J4ZqfFKo" title="Scuf Controller Deal" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><div class="product"><a data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:99.83%;"><img id="drjqSuWFdQCkPHb5yYa4uK" name="Valor Pro (wired)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/drjqSuWFdQCkPHb5yYa4uK.png" mos="" align="middle" fullscreen="" width="602" height="601" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">Valor Pro (wired): was $99.99 now $79.99</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">Amazon $85.49</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">View Deal</a></p></div><p>I don't tend to use controller very often. Not out of prejudice, I just mainly play competitive FPS games that require keyboard and mouse. But when I do, my hand goes straight for the Scuf Valor Pro. </p><p>I'm talking specifically about the wired version. While the wireless version is also at its lowest ever price for <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank">$140 at Scuf</a> (<a href="https://www.amazon.com/VALOR-Wireless-Performance-Controller-Gaming-Console/dp/B0FPXJYFRQ" target="_blank">$142 at Amazon</a>), it's a still a bit expensive. This wired one, though, is just <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank">$80 at Scuf</a> or <a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">$85 at Amazon</a> right now.</p><p>When I <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">reviewed the controller</a>, and despite rating it highly, I was quite negative about the controller lacking wireless for $100. But over time, I've come to see that the other benefits to it really do make it worth the money despite no wireless connectivity. Throw in the $20 discount and it's not even a question—it just <em>is </em>worth it.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>That's because I've never had my hands on such a damn glorious-feeling peripheral, other than the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. </p><p>Apart from 8K polling, which is unnecessary anyway, it has everything you might want from a competitive controller: Hall effect thumbsticks, click/squeeze trigger toggles, back paddles, you name it. But the real value comes in the build quality and feel. Every button has a wonderful click, clack, or thunk to it, the Xbox-like shape is incredibly comfy, and the materials keep the controller in place in your hand.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jYCCAAKVVwsh5ssQd6qzZa.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One thing I particularly like about it is how the left and right shoulder buttons wrap around the edges and lie flush, allowing you to shift your index finger very quickly and easily upwards to press them—an intentional design decision that pays off.</p><p>If customization is your jam, you can swap out its front magnetic faceplate, too. That gives access to the thumbsticks, which are easily swappable as well. For instance, to one of the included longer sticks that help with aim in shooters (though I'd just stick to using a mouse for shooters that require good aim, personally).</p><h2 id="check-out-all-of-amazon-s-controller-deals">👉 <a href="https://www.amazon.com/s?k=controller&crid=CACRS760D7SD&sprefix=controll%2Caps%2C191&ref=nb_sb_noss_2" target="_blank">Check out all of Amazon's controller deals</a> 👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-most-satisfying-controller-ive-ever-used-is-on-sale-at-its-lowest-ever-price-for-prime-day/</link>
                                                                            <description>
                            <![CDATA[ There's nothing scuffed about this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dzxdiN4C5S8kvenv7SK5r</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GQNkGa2bGmVufCTE4sBGuC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 24 Jun 2026 14:51:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/GQNkGa2bGmVufCTE4sBGuC-1280-80.jpg">
                                                            <media:credit><![CDATA[Scuf]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Scuf Valor Pro (wired) controller, shown front and back, on a custom PC Gamer Prime Day deal background.]]></media:description>                                                            <media:text><![CDATA[A Scuf Valor Pro (wired) controller, shown front and back, on a custom PC Gamer Prime Day deal background.]]></media:text>
                                <media:title type="plain"><![CDATA[A Scuf Valor Pro (wired) controller, shown front and back, on a custom PC Gamer Prime Day deal background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GQNkGa2bGmVufCTE4sBGuC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <iframe src="https://content.jwplatform.com/players/J4ZqfFKo.html" id="J4ZqfFKo" title="Scuf Controller Deal" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><div class="product"><a data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:99.83%;"><img id="drjqSuWFdQCkPHb5yYa4uK" name="Valor Pro (wired)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/drjqSuWFdQCkPHb5yYa4uK.png" mos="" align="middle" fullscreen="" width="602" height="601" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">Valor Pro (wired): was $99.99 now $79.99</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">Amazon $85.49</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">View Deal</a></p></div><p>I don't tend to use controller very often. Not out of prejudice, I just mainly play competitive FPS games that require keyboard and mouse. But when I do, my hand goes straight for the Scuf Valor Pro. </p><p>I'm talking specifically about the wired version. While the wireless version is also at its lowest ever price for <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank">$140 at Scuf</a> (<a href="https://www.amazon.com/VALOR-Wireless-Performance-Controller-Gaming-Console/dp/B0FPXJYFRQ" target="_blank">$142 at Amazon</a>), it's a still a bit expensive. This wired one, though, is just <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank">$80 at Scuf</a> or <a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">$85 at Amazon</a> right now.</p><p>When I <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">reviewed the controller</a>, and despite rating it highly, I was quite negative about the controller lacking wireless for $100. But over time, I've come to see that the other benefits to it really do make it worth the money despite no wireless connectivity. Throw in the $20 discount and it's not even a question—it just <em>is </em>worth it.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>That's because I've never had my hands on such a damn glorious-feeling peripheral, other than the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. </p><p>Apart from 8K polling, which is unnecessary anyway, it has everything you might want from a competitive controller: Hall effect thumbsticks, click/squeeze trigger toggles, back paddles, you name it. But the real value comes in the build quality and feel. Every button has a wonderful click, clack, or thunk to it, the Xbox-like shape is incredibly comfy, and the materials keep the controller in place in your hand.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jYCCAAKVVwsh5ssQd6qzZa.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One thing I particularly like about it is how the left and right shoulder buttons wrap around the edges and lie flush, allowing you to shift your index finger very quickly and easily upwards to press them—an intentional design decision that pays off.</p><p>If customization is your jam, you can swap out its front magnetic faceplate, too. That gives access to the thumbsticks, which are easily swappable as well. For instance, to one of the included longer sticks that help with aim in shooters (though I'd just stick to using a mouse for shooters that require good aim, personally).</p><h2 id="check-out-all-of-amazon-s-controller-deals">👉 <a href="https://www.amazon.com/s?k=controller&crid=CACRS760D7SD&sprefix=controll%2Caps%2C191&ref=nb_sb_noss_2" target="_blank">Check out all of Amazon's controller deals</a> 👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Looking for a Forza-ready, direct drive racing wheel for less? This $379 Moza bundle is astonishingly good value for Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="GcQBfkmCP3CcHzQEv37ZAY" name="1728480629.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/GcQBfkmCP3CcHzQEv37ZAY.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">R5 Racing Wheel Bundle: was $599 now $379</a></strong><br>I was blown away by the R5 bundle's build quality and sensitive-yet-powerful feedback when <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">I reviewed it back in 2024</a>—and I'm still blown away when I use it for a sim racing session now. At this price? I wouldn't think twice, although I would definitely buy the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">$29 load-cell kit</a> for the brake pedal while I was at it.<br><br><strong>Key specs: Direct drive | 5 nm | Included pedal set</strong><a class="view-deal button" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">View Deal</a></p></div><p>Sometimes you find a Prime Day deal that's so good, you perform a genuine double take. That was me this afternoon, when I spotted the Moza R5 bundle f<a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank">or $379 on the Moza storefront</a>.</p><p>I mean, seriously? It's our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/#section-best-budget-direct-drive-racing-wheel" target="_blank">best budget direct drive racing wheel</a> pick, sure. But it was pretty damn affordable to begin with, as direct drive bundles go. Now? It makes so much sense, I'm thinking of getting another one.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>I reviewed the <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">Moza R5 bundle</a> back in 2024, and I gave it a score of 90%. I've used it regularly since then, and not once has it let me down. In fact, if I were to score it today, I would give it... 90%. That's how much I like this particular wheel, wheelbase, and pedal combo.</p><p>You'll want the extra Performance Kit, which provides a load-cell spring for the brake pedal for the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">very reasonable price of $29</a>. Why Moza doesn't include it from the off, I have no idea. But other than that, this bundle would make the perfect kit for anyone who wants to feel like they're driving a real car with their gaming PC.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SWzFfSqWThXB6ZxopbRUoj.jpg" alt="A side angle of the MOZA R5 wheelbase mounted to a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DqyBksuFpDQT7tU7whiNwX.jpg" alt="The MOZA R5 Bundle, including wheel, wheelbase, pedals and desk mount" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pgFmgLcPEP5P7DB9tSNpNR.jpg" alt="The MOZA R5 ES Wheel, included with the MOZA R5 bundle, fresh out of the box " /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qiP4NQLSfdoasHcHx9nRKS.jpg" alt="The MOZA R5 wheelbase sitting upright, showing its small size" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yMxukEwQunrTBuxtjg9nfk.jpg" alt="A drivers eye-view of the MOZA R5 being used for some sim racing, with a terrible driver behind the wheel" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I've had mountains of fun with mine, and it still looks and feels as solid as it did the day I pulled it from the box. The feedback is superbly detailed, it makes no noise (the wheelbase outer casing acts as a very effective heatsink, negating the need for a fan), and it's the best thing this side of something very expensive yet brilliant, like the <a href="https://www.pcgamer.com/logitech-g-pro-racing-wheel-pedals-review/" target="_blank">Logitech G Pro Racing Wheel</a>.</p><p>Actually, I lied when I said it made no noise. The magnetic paddle shifters have a wonderfully chunky "thonk" to them, which makes changing gear at speed a tactile delight. Honestly, I could go on and on about how much I like the R5 until I ran into my word limit, but I think I've probably said enough.</p><p>It's brilliant, it's extraordinarily well-priced over the Prime Day sales, and if you like a bit of <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>, you should absolutely consider one. </p><p>Or, if it's still much too expensive for your liking, you should take a look at the <a href="https://www.pcgamer.com/hardware/controllers/the-controller-i-use-every-day-in-forza-horizon-6-is-now-just-usd43-thanks-to-prime-day-so-you-too-can-do-the-8bitdo/" target="_blank">$43 gaming controller that our Nick uses for the very same purpose</a>. Me, I like a wheel. And this one? It's downright fantastic.</p><h2 id="check-out-all-of-moza-s-racing-wheel-deals-here">👉<a href="https://us.mozaracing.com/collections/racing-series" target="_blank">Check out all of Moza's racing wheel deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/steering-wheels/looking-for-a-forza-ready-direct-drive-racing-wheel-for-less-this-usd379-moza-bundle-is-astonishingly-good-value-for-prime-day/</link>
                                                                            <description>
                            <![CDATA[ It's silly money for such a good sim racing setup. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">w5UpPzwBrCWYVAahyUuwzE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/teqr2hgU7NAgbzhqpnzA3F-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 16:20:28 +0000</pubDate>                                                                                                                                <updated>Tue, 23 Jun 2026 16:20:32 +0000</updated>
                                                                                                                                            <category><![CDATA[Steering Wheels]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/teqr2hgU7NAgbzhqpnzA3F-1280-80.jpg">
                                                            <media:credit><![CDATA[Moza]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Moza R5 direct drive racing wheel bundle on a Prime Day blue and red background]]></media:description>                                                            <media:text><![CDATA[A Moza R5 direct drive racing wheel bundle on a Prime Day blue and red background]]></media:text>
                                <media:title type="plain"><![CDATA[A Moza R5 direct drive racing wheel bundle on a Prime Day blue and red background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/teqr2hgU7NAgbzhqpnzA3F-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="GcQBfkmCP3CcHzQEv37ZAY" name="1728480629.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/GcQBfkmCP3CcHzQEv37ZAY.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">R5 Racing Wheel Bundle: was $599 now $379</a></strong><br>I was blown away by the R5 bundle's build quality and sensitive-yet-powerful feedback when <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">I reviewed it back in 2024</a>—and I'm still blown away when I use it for a sim racing session now. At this price? I wouldn't think twice, although I would definitely buy the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">$29 load-cell kit</a> for the brake pedal while I was at it.<br><br><strong>Key specs: Direct drive | 5 nm | Included pedal set</strong><a class="view-deal button" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">View Deal</a></p></div><p>Sometimes you find a Prime Day deal that's so good, you perform a genuine double take. That was me this afternoon, when I spotted the Moza R5 bundle f<a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank">or $379 on the Moza storefront</a>.</p><p>I mean, seriously? It's our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/#section-best-budget-direct-drive-racing-wheel" target="_blank">best budget direct drive racing wheel</a> pick, sure. But it was pretty damn affordable to begin with, as direct drive bundles go. Now? It makes so much sense, I'm thinking of getting another one.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>I reviewed the <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">Moza R5 bundle</a> back in 2024, and I gave it a score of 90%. I've used it regularly since then, and not once has it let me down. In fact, if I were to score it today, I would give it... 90%. That's how much I like this particular wheel, wheelbase, and pedal combo.</p><p>You'll want the extra Performance Kit, which provides a load-cell spring for the brake pedal for the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">very reasonable price of $29</a>. Why Moza doesn't include it from the off, I have no idea. But other than that, this bundle would make the perfect kit for anyone who wants to feel like they're driving a real car with their gaming PC.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SWzFfSqWThXB6ZxopbRUoj.jpg" alt="A side angle of the MOZA R5 wheelbase mounted to a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DqyBksuFpDQT7tU7whiNwX.jpg" alt="The MOZA R5 Bundle, including wheel, wheelbase, pedals and desk mount" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pgFmgLcPEP5P7DB9tSNpNR.jpg" alt="The MOZA R5 ES Wheel, included with the MOZA R5 bundle, fresh out of the box " /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qiP4NQLSfdoasHcHx9nRKS.jpg" alt="The MOZA R5 wheelbase sitting upright, showing its small size" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yMxukEwQunrTBuxtjg9nfk.jpg" alt="A drivers eye-view of the MOZA R5 being used for some sim racing, with a terrible driver behind the wheel" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I've had mountains of fun with mine, and it still looks and feels as solid as it did the day I pulled it from the box. The feedback is superbly detailed, it makes no noise (the wheelbase outer casing acts as a very effective heatsink, negating the need for a fan), and it's the best thing this side of something very expensive yet brilliant, like the <a href="https://www.pcgamer.com/logitech-g-pro-racing-wheel-pedals-review/" target="_blank">Logitech G Pro Racing Wheel</a>.</p><p>Actually, I lied when I said it made no noise. The magnetic paddle shifters have a wonderfully chunky "thonk" to them, which makes changing gear at speed a tactile delight. Honestly, I could go on and on about how much I like the R5 until I ran into my word limit, but I think I've probably said enough.</p><p>It's brilliant, it's extraordinarily well-priced over the Prime Day sales, and if you like a bit of <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>, you should absolutely consider one. </p><p>Or, if it's still much too expensive for your liking, you should take a look at the <a href="https://www.pcgamer.com/hardware/controllers/the-controller-i-use-every-day-in-forza-horizon-6-is-now-just-usd43-thanks-to-prime-day-so-you-too-can-do-the-8bitdo/" target="_blank">$43 gaming controller that our Nick uses for the very same purpose</a>. Me, I like a wheel. And this one? It's downright fantastic.</p><h2 id="check-out-all-of-moza-s-racing-wheel-deals-here">👉<a href="https://us.mozaracing.com/collections/racing-series" target="_blank">Check out all of Moza's racing wheel deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The controller I use every day in Forza Horizon 6 is now just $43 thanks to Prime Day, so you too can do the 8BitDo ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="kW4QkBqLgDme4trpzgm4Rb" name="8bitdo_ultimate_2_wireless_controller" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kW4QkBqLgDme4trpzgm4Rb.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>As a replacement for a standard Xbox controller for your PC, the 8BitDo Ultimate 2 is well worth considering at this price. Packed with features, only its cheap-feeling plastics let it down. <strong>This deal is for Prime members only.</strong></p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 2.4 GHz wireless, Bluetooth | Gyro control | Charging base</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69">View Deal</a></p></div><p>Every day for the past few weeks, I've been blasting through the highways of Tokyo in <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>. If I had the space for such a setup (and...err...the money), I'd be using <a href="https://www.pcgamer.com/hardware/steering-wheels/looking-for-a-forza-ready-direct-drive-racing-wheel-for-less-this-usd379-moza-bundle-is-astonishingly-good-value-for-prime-day" target="_blank">a really nice wheel-and-pedals setup</a>, but alas, I have to make do with a controller. </p><p>Fortunately, it's a pretty decent one, and right now the 8BitDo Ultimate 2 is a fraction under <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank">$43 at Amazon</a>, though just the white version.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The Ultimate 2 is packed with all kinds of controller goodies: tunnelling magnetoresistance (TMR) thumbsticks and Hall effect triggers give you superb control, as well as no chance of ever experiencing stick drift. There are extra buttons on the shoulders and back to give you even more control options.</p><p>And when you're done gaming, you can just drop the thing into its charging base. It will automatically shut off, but should you need it instantly, it will power up and reconnect to your gaming PC within a second.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2yEoxTqmneV2gP5S4iAEBf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VsHpd8fPdPb7HebhTw2GAf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RHvq4qqjCWAGKnR38Jz6Af.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v67Psd5WC75KXQNoJRQW8f.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZetfV3jc7vVmQotd4QtVBf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dnU5gtcW8Uat5RE3GCZKBf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>When <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2-wireless-review/" target="_blank">I reviewed 8BitDo's 'ultimate' wireless controller last year</a>, I was impressed by all its features and usability, though I was somewhat less keen on its cheap-feeling plastics, stick caps that made my thumbs sore, and the lack of resistance in the triggers.</p><p>But having used it almost every day since then, I've got used to the sticks and triggers, and they don't really bother me so much any more. It still feels a tad cheap, though, but credit to 8BitDo, the white plastics haven't become grubby in the least bit.</p><p>At its original $60, you'd be forgiven for complaining about such things, but at $43, the Ultimate 2 is genuinely great value for money for what you're getting. And when it's a little cooler in my office tonight, I'll be hammering my little Miata around with ease, thanks to the 8BitDo.</p><h2 id="find-all-of-amazon-s-gaming-controller-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Find all of Amazon's gaming controller deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-controller-i-use-every-day-in-forza-horizon-6-is-now-just-usd43-thanks-to-prime-day-so-you-too-can-do-the-8bitdo/</link>
                                                                            <description>
                            <![CDATA[ Do-do, do-do-be-do, do-do-do, bit-do, bit-do. Yes the heat in my office has got to me. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LupVVnVJzudL4pLmUUfyah</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8pXQqXyxLMPfMGP9GUfHgH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 16:17:19 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick, gaming, and computers all first met in the early 1980s. After leaving university, he became a physics and IT teacher and started writing about tech in the late 1990s. That resulted in him working with MadOnion to write the help files for 3DMark and PCMark. After a short stint working at Beyond3D.com, Nick joined Futuremark (MadOnion rebranded) full-time, as editor-in-chief for its PC gaming section, YouGamers. After the site shutdown, he became an engineering and computing lecturer for many years, but missed the writing bug. Cue four years at TechSpot.com covering everything and anything to do with tech and PCs. He freely admits to being far too obsessed with GPUs and open-world grindy RPGs, but who isn&#039;t these days?&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8pXQqXyxLMPfMGP9GUfHgH-1280-80.jpg">
                                                            <media:credit><![CDATA[8BitDo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An image of an 8BitDo Ultimate 2 wireless controller against a colorful blue background, with Prime Day and a PC Gamer logo on the sides]]></media:description>                                                            <media:text><![CDATA[An image of an 8BitDo Ultimate 2 wireless controller against a colorful blue background, with Prime Day and a PC Gamer logo on the sides]]></media:text>
                                <media:title type="plain"><![CDATA[An image of an 8BitDo Ultimate 2 wireless controller against a colorful blue background, with Prime Day and a PC Gamer logo on the sides]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8pXQqXyxLMPfMGP9GUfHgH-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="kW4QkBqLgDme4trpzgm4Rb" name="8bitdo_ultimate_2_wireless_controller" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kW4QkBqLgDme4trpzgm4Rb.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>As a replacement for a standard Xbox controller for your PC, the 8BitDo Ultimate 2 is well worth considering at this price. Packed with features, only its cheap-feeling plastics let it down. <strong>This deal is for Prime members only.</strong></p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 2.4 GHz wireless, Bluetooth | Gyro control | Charging base</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69">View Deal</a></p></div><p>Every day for the past few weeks, I've been blasting through the highways of Tokyo in <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>. If I had the space for such a setup (and...err...the money), I'd be using <a href="https://www.pcgamer.com/hardware/steering-wheels/looking-for-a-forza-ready-direct-drive-racing-wheel-for-less-this-usd379-moza-bundle-is-astonishingly-good-value-for-prime-day" target="_blank">a really nice wheel-and-pedals setup</a>, but alas, I have to make do with a controller. </p><p>Fortunately, it's a pretty decent one, and right now the 8BitDo Ultimate 2 is a fraction under <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank">$43 at Amazon</a>, though just the white version.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The Ultimate 2 is packed with all kinds of controller goodies: tunnelling magnetoresistance (TMR) thumbsticks and Hall effect triggers give you superb control, as well as no chance of ever experiencing stick drift. There are extra buttons on the shoulders and back to give you even more control options.</p><p>And when you're done gaming, you can just drop the thing into its charging base. It will automatically shut off, but should you need it instantly, it will power up and reconnect to your gaming PC within a second.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2yEoxTqmneV2gP5S4iAEBf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VsHpd8fPdPb7HebhTw2GAf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RHvq4qqjCWAGKnR38Jz6Af.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v67Psd5WC75KXQNoJRQW8f.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZetfV3jc7vVmQotd4QtVBf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dnU5gtcW8Uat5RE3GCZKBf.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>When <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2-wireless-review/" target="_blank">I reviewed 8BitDo's 'ultimate' wireless controller last year</a>, I was impressed by all its features and usability, though I was somewhat less keen on its cheap-feeling plastics, stick caps that made my thumbs sore, and the lack of resistance in the triggers.</p><p>But having used it almost every day since then, I've got used to the sticks and triggers, and they don't really bother me so much any more. It still feels a tad cheap, though, but credit to 8BitDo, the white plastics haven't become grubby in the least bit.</p><p>At its original $60, you'd be forgiven for complaining about such things, but at $43, the Ultimate 2 is genuinely great value for money for what you're getting. And when it's a little cooler in my office tonight, I'll be hammering my little Miata around with ease, thanks to the 8BitDo.</p><h2 id="find-all-of-amazon-s-gaming-controller-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Find all of Amazon's gaming controller deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The best high-end PC controllers used to cost a king's ransom, now it's a little more affordable thanks to Amazon Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="c5NHFj87XKdjwDX9wXdpoD" name="71YOWPfmyfL._SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/c5NHFj87XKdjwDX9wXdpoD.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">Wolverine V3 Pro 8K PC: was $199.90 now $149.99</a></strong><br>Lighter than its predecessor, it's now also packing in an 8K polling rate. Sturdy construction and magnetic tech throughout means this high-end gamepad will see you through <em>years </em>of gaming.</p><p><strong>Key Specs: Wireless | Asymmetric sticks | TMR sticks | Hall effect HyperTriggers | Up to 8,000 Hz polling rate | Back paddles</strong><br><br><strong>Price watch: </strong><a href="https://www.newegg.com/jaysuing-rz06-05540100-r3u1-gamepad-black/p/232-01A7-00041" target="_blank">Newegg $230.99</a><a class="view-deal button" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">View Deal</a></p></div><p>The best of the best often comes at a premium. The controller we rate as the tippy-top of high-end gamepads is no different, going for what Alex describes as a "King's ransom" in his <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC review</a>. Thankfully, the Amazon Prime Day sales is when those premium peripherals tend to take a step down from their pricey podiums.</p><p>Usually, the Razer Wolverine V3 Pro 8K PC controller costs a wince-worthy 200 bucks, which is definitely too rich for my blood when it comes to gamepads. Prime Day has lopped off 25% from that pointed price tag though, and now you can <a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">get the Razer Wolverine V3 Pro 8K for $150 from Amazon</a>.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>For someone who would rather, say, kneeslide into a bush in <a href="https://www.pcgamer.com/uk/arc-raiders/" target="_blank">Arc Raiders</a> as opposed to pelting through Dire Marsh's nighttime map in <a href="https://www.pcgamer.com/games/fps/marathons-new-pve-experiment-is-bungies-most-genius-decision-yet-so-make-it-a-full-mode-already/" target="_blank">Marathon</a>, $150 is still a bit more than I personally would want to spend on a controller for PC. However, the Razer Wolverine V3 Pro 8K ain't 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 nothing; if your budget allows, you're definitely getting a premium experience with this in your palms.</p><p>Asymmetric TMR thumbsticks banish the spectre of stick drift, and you also get your share of Hall Effect triggers that the pad bills as 'HyperTriggers' here. Plenty of budget options now enjoy this tech (including another best of the best, the considerably more affordable <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>), so that's not wholly to blame for the price tag. So, let's take a look at some of the features that make this pad so premium.</p><p>At 220 grams, it's a fairly weighty bit of kit though significantly sighter than its forebear (<a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">which is also on sale for the same price</a> even though it doesn't have the 8K polling rate). Alex also praised this PC controller's build quality in particular, writing, "[It's] 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><figure role="gallery"><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/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/37u73wiqVwyeN5W7TyxQa.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><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/CwjEYNLXx7nYyEjUF2wjc.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/LThLVdCUAKtfWZPShC7Ud.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Now, I wouldn't recommend flinging such a gamepad, but its sturdy construction assures me it could certainly withstand a few accidental tumbles. According to Alex, you should also get a lot more life out of the battery than the humble advertised 20 hours. He explains, "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>That does finally lead us onto the headlining polling rate rather nicely. The 8,000 Hz polling rate can be activated via the Razer Synapse software (and, honestly, it's a lot more than most gamers will need). Coupled with the TMR sticks, you're looking at a precise bit of kit geared towards anyone with pro esports ambition—and that explains the price tag. That's just as well, as any controller entering the esports arena will stare down heavy use, and the construction of the Razer Wolverine V3 Pro 8K PC means it can definitely withstand that for years to come.</p><h3 id="some-cheaper-alternatives">Some cheaper alternatives...</h3><div class="product"><a data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7G5kFiwPuc34Kq2LEartXH" name="PCGamer Deal Block - 2025-11-26T153342.212" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7G5kFiwPuc34Kq2LEartXH.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong></p><p><strong>Price check:</strong> <a href="https://www.amazon.com/Wireless-Controller-Switch-Bluetooth-Vibration-Nintendo/dp/B0D9B4MCRF" target="_blank" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">Amazon $19.99</a><strong></strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">View Deal</a></p></div><div class="product"><a data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>Now, obviously at $150 it is a lot of cash to drop on, well, anything at the moment, but in the world of PC pads there are a ton to choose from at a more reasonable price. For just <a href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank">$20 you can get a genuine wireless Hall effect pad</a> in a funky colour or spend a bit more and grab our pick as the best overall controller for PC right now, the <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Gamesir G7 Pro Tri-mode for just $64</a>.</p><p>So, there are options if the excellent Razer is still too rich for your blood even with this discount.</p><h2 id="check-out-all-of-amazon-s-pc-controller-deals">👉<a href="https://www.amazon.com/s?k=PC+controller&rh=n%3A402052011&ref=nb_sb_noss" target="_blank">Check out all of Amazon's PC controller deals👈</a></h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-best-high-end-pc-controllers-used-to-cost-a-kings-ransom-now-its-a-little-more-affordable-thanks-to-amazon-prime-day/</link>
                                                                            <description>
                            <![CDATA[ This here peasant is revolting even with the discount, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VtXw239qzkYxHCFVWvbnMo</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/93n5mHCotkSJexWpHzuo2o-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 13:20:09 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 12:54:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/93n5mHCotkSJexWpHzuo2o-1280-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Razer Wolverine V3 Pro 8K PC wireless controller floats in the funky PC G Prime Day deal void.]]></media:description>                                                            <media:text><![CDATA[The Razer Wolverine V3 Pro 8K PC wireless controller floats in the funky PC G Prime Day deal void.]]></media:text>
                                <media:title type="plain"><![CDATA[The Razer Wolverine V3 Pro 8K PC wireless controller floats in the funky PC G Prime Day deal void.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/93n5mHCotkSJexWpHzuo2o-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="c5NHFj87XKdjwDX9wXdpoD" name="71YOWPfmyfL._SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/c5NHFj87XKdjwDX9wXdpoD.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">Wolverine V3 Pro 8K PC: was $199.90 now $149.99</a></strong><br>Lighter than its predecessor, it's now also packing in an 8K polling rate. Sturdy construction and magnetic tech throughout means this high-end gamepad will see you through <em>years </em>of gaming.</p><p><strong>Key Specs: Wireless | Asymmetric sticks | TMR sticks | Hall effect HyperTriggers | Up to 8,000 Hz polling rate | Back paddles</strong><br><br><strong>Price watch: </strong><a href="https://www.newegg.com/jaysuing-rz06-05540100-r3u1-gamepad-black/p/232-01A7-00041" target="_blank">Newegg $230.99</a><a class="view-deal button" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">View Deal</a></p></div><p>The best of the best often comes at a premium. The controller we rate as the tippy-top of high-end gamepads is no different, going for what Alex describes as a "King's ransom" in his <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC review</a>. Thankfully, the Amazon Prime Day sales is when those premium peripherals tend to take a step down from their pricey podiums.</p><p>Usually, the Razer Wolverine V3 Pro 8K PC controller costs a wince-worthy 200 bucks, which is definitely too rich for my blood when it comes to gamepads. Prime Day has lopped off 25% from that pointed price tag though, and now you can <a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">get the Razer Wolverine V3 Pro 8K for $150 from Amazon</a>.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>For someone who would rather, say, kneeslide into a bush in <a href="https://www.pcgamer.com/uk/arc-raiders/" target="_blank">Arc Raiders</a> as opposed to pelting through Dire Marsh's nighttime map in <a href="https://www.pcgamer.com/games/fps/marathons-new-pve-experiment-is-bungies-most-genius-decision-yet-so-make-it-a-full-mode-already/" target="_blank">Marathon</a>, $150 is still a bit more than I personally would want to spend on a controller for PC. However, the Razer Wolverine V3 Pro 8K ain't 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 nothing; if your budget allows, you're definitely getting a premium experience with this in your palms.</p><p>Asymmetric TMR thumbsticks banish the spectre of stick drift, and you also get your share of Hall Effect triggers that the pad bills as 'HyperTriggers' here. Plenty of budget options now enjoy this tech (including another best of the best, the considerably more affordable <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>), so that's not wholly to blame for the price tag. So, let's take a look at some of the features that make this pad so premium.</p><p>At 220 grams, it's a fairly weighty bit of kit though significantly sighter than its forebear (<a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">which is also on sale for the same price</a> even though it doesn't have the 8K polling rate). Alex also praised this PC controller's build quality in particular, writing, "[It's] 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><figure role="gallery"><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/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/37u73wiqVwyeN5W7TyxQa.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><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/CwjEYNLXx7nYyEjUF2wjc.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/LThLVdCUAKtfWZPShC7Ud.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Now, I wouldn't recommend flinging such a gamepad, but its sturdy construction assures me it could certainly withstand a few accidental tumbles. According to Alex, you should also get a lot more life out of the battery than the humble advertised 20 hours. He explains, "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>That does finally lead us onto the headlining polling rate rather nicely. The 8,000 Hz polling rate can be activated via the Razer Synapse software (and, honestly, it's a lot more than most gamers will need). Coupled with the TMR sticks, you're looking at a precise bit of kit geared towards anyone with pro esports ambition—and that explains the price tag. That's just as well, as any controller entering the esports arena will stare down heavy use, and the construction of the Razer Wolverine V3 Pro 8K PC means it can definitely withstand that for years to come.</p><h3 id="some-cheaper-alternatives">Some cheaper alternatives...</h3><div class="product"><a data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7G5kFiwPuc34Kq2LEartXH" name="PCGamer Deal Block - 2025-11-26T153342.212" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7G5kFiwPuc34Kq2LEartXH.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong></p><p><strong>Price check:</strong> <a href="https://www.amazon.com/Wireless-Controller-Switch-Bluetooth-Vibration-Nintendo/dp/B0D9B4MCRF" target="_blank" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">Amazon $19.99</a><strong></strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">View Deal</a></p></div><div class="product"><a data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>Now, obviously at $150 it is a lot of cash to drop on, well, anything at the moment, but in the world of PC pads there are a ton to choose from at a more reasonable price. For just <a href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank">$20 you can get a genuine wireless Hall effect pad</a> in a funky colour or spend a bit more and grab our pick as the best overall controller for PC right now, the <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Gamesir G7 Pro Tri-mode for just $64</a>.</p><p>So, there are options if the excellent Razer is still too rich for your blood even with this discount.</p><h2 id="check-out-all-of-amazon-s-pc-controller-deals">👉<a href="https://www.amazon.com/s?k=PC+controller&rh=n%3A402052011&ref=nb_sb_noss" target="_blank">Check out all of Amazon's PC controller deals👈</a></h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forza Horizon 6 works best with a racing wheel, so I've found nine Amazon Prime Day deals to put you in pole position ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a> is a very good racing game. This, you probably already know. But, while the controller support is very good, sim racing enthusiasts will know that the best way to drive is through a great wheel and pedal set.</p><p>Luckily, we at PC Gamer have tested loads of sim racing gear—from the very affordable to the downright lush. And in case you haven't heard, <strong>it's Amazon Prime Day today</strong> (and until June 26), so I've put together a selection of the very best sim racing deals to get you strapped in and screaming around the streets of Japan. Most are straight from our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/" target="_blank">best racing wheel</a> guide, no less.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>A great wheel might not turn you into Max Verstappen, but when it comes to making you feel like you're at the controls of a bazillion-brake horsepower beast, there's nothing quite like it. You'll also want to consider somewhere to sit for the best racing position, a set of pedals for wheels that don't include them, and possibly even a manual shifter. We've got you covered—I'll see you at the starting line!</p><h2 class="article-body__section" id="section-prime-day-pc-racing-wheels-and-pedals-for-forza-horizon-6"><span>Prime Day PC racing wheels and pedals for Forza Horizon 6</span></h2>        <div class="featured_product_block featured_block_hero" data-id="cf778f55-aeff-4e1c-bf40-80824a5ada9d">            <a href="https://www.amazon.com/Logitech-Gaming-Driving-Force-Shifter/dp/B00Z0UWV3O/" data-model-name="G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nqAA5HCpJRybxJxW7oYLEW.jpg" alt="A Logitech G Driving Force Shifter on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="afbaa816-0ab5-4e5a-a576-8ccb46612653">            <a href="https://www.amazon.com/Playseat%C2%AE-Challenge-ActiFit-PlayStation/dp/B09MKT7PRZ/" data-model-name="Challenge Sim Racing Simulator Cockpit Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/YGTxKGLHf2jMKj5gj2Q7QR.jpg" alt="A Playseat Challenge X sim racing cockpit chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Challenge Sim Racing Simulator Cockpit Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="3def6010-6dee-4d50-85cd-f786e59d5340">            <a href="https://www.bestbuy.com/product/thrustmaster-t128-racing-wheel-for-playstation-4-5-and-pc-black/JXLH464JCC" data-model-name="T128 Racing Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/MhpikktmzTzCD4vDsup6rK.jpg" alt="A Thrustmaster T128 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T128 Racing Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0c1fe490-e9c0-455f-8cfc-02ae4b8ee960">            <a href="https://www.amazon.com/Logitech-featuring-TRUEFORCE-Feedback-Responsive/dp/B07PGGDJSG/" data-model-name="G923 Racing Wheel and Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Y4iC2s2LG5webm3RDsd9PE.jpg" alt="A Logitech G923 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G923 Racing Wheel and Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="44470ce7-e2d0-4327-a8ef-a1b0732231bd">            <a href="https://www.amazon.com/Thrustmaster-T300-Racing-Wheel-Playstation-3/dp/B01M1L2NRL/" data-model-name="T300RS GT Steering Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8qNJ4TU5M4csGaEcjGgtQc.jpg" alt="A Thrustmaster T300RS GT steering wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T300RS GT Steering Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fbc6a79c-926b-48d3-9475-df513dab310c">            <a href="https://www.logitechg.com/en-us/shop/p/pro-racing-pedals.941-000186" data-model-name="G Pro Racing Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8SR4utMV2UeAKTFCovu7o8.jpg" alt="Logitech G Pro sim racing pedals on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Pro Racing Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="d6866dbb-7cf3-4a63-9867-d11dbcb8a7fa">            <a href="https://us.mozaracing.com/products/r5-racing-bundle" data-model-name="R5 Bundle" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/84nvm6RXxmTX6MaZRbrXkk.jpg" alt="A Moza Racing R5 bundle with direct drive wheel and pedals"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>MOZA Racing</div>                                        <div class="featured__title">R5 Bundle</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="a5ff5583-98b0-4e49-960d-0b81ac22baa2">            <a href="https://www.amazon.com/Playseat-Trophy-Adjustable-Lightweight-Xbox-One/dp/B0BSTFS6W5/" data-model-name="Trophy - Logitech G Edition Sim Racing Cockpit" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/T4pubKM2EpF9GUEstywWUH.jpg" alt="A Playseat Trophy Logitech G Edition sim racing chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Trophy - Logitech G Edition Sim Racing Cockpit</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_standard" data-id="c4a29261-c1e0-4451-945e-d59353ecc61c">            <a href="https://www.amazon.com/Logitech-PRO-Racing-Wheel-Playstation/dp/B08W27XX75/" data-model-name="G Pro Racing Wheel" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Syk5iuxjdwq5uxqR5Hqdt3.jpg" alt="A Logitech G Pro racing wheel on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech G</div>                                        <div class="featured__title">G Pro Racing Wheel</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/steering-wheels/forza-horizon-6-is-better-when-youre-in-the-driving-seat-so-ive-picked-out-some-of-our-best-racing-wheels-pedals-and-chairs-to-put-you-in-pole-position/</link>
                                                                            <description>
                            <![CDATA[ Altogether now: Vrooooooooooooom! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">96kz7bxdJpKp2RzBUfWYJG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7cdLzn3FmqBmbi2mDWpB6d-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 11:57:50 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 15:44:48 +0000</updated>
                                                                                                                                            <category><![CDATA[Steering Wheels]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7cdLzn3FmqBmbi2mDWpB6d-1280-80.jpg">
                                                            <media:credit><![CDATA[Logitech, Playseat]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A selection of sim racing and racing wheel products on a blue and red Amazon Prime Day background]]></media:description>                                                            <media:text><![CDATA[A selection of sim racing and racing wheel products on a blue and red Amazon Prime Day background]]></media:text>
                                <media:title type="plain"><![CDATA[A selection of sim racing and racing wheel products on a blue and red Amazon Prime Day background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7cdLzn3FmqBmbi2mDWpB6d-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a> is a very good racing game. This, you probably already know. But, while the controller support is very good, sim racing enthusiasts will know that the best way to drive is through a great wheel and pedal set.</p><p>Luckily, we at PC Gamer have tested loads of sim racing gear—from the very affordable to the downright lush. And in case you haven't heard, <strong>it's Amazon Prime Day today</strong> (and until June 26), so I've put together a selection of the very best sim racing deals to get you strapped in and screaming around the streets of Japan. Most are straight from our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/" target="_blank">best racing wheel</a> guide, no less.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>A great wheel might not turn you into Max Verstappen, but when it comes to making you feel like you're at the controls of a bazillion-brake horsepower beast, there's nothing quite like it. You'll also want to consider somewhere to sit for the best racing position, a set of pedals for wheels that don't include them, and possibly even a manual shifter. We've got you covered—I'll see you at the starting line!</p><h2 class="article-body__section" id="section-prime-day-pc-racing-wheels-and-pedals-for-forza-horizon-6"><span>Prime Day PC racing wheels and pedals for Forza Horizon 6</span></h2>        <div class="featured_product_block featured_block_hero" data-id="cf778f55-aeff-4e1c-bf40-80824a5ada9d">            <a href="https://www.amazon.com/Logitech-Gaming-Driving-Force-Shifter/dp/B00Z0UWV3O/" data-model-name="G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nqAA5HCpJRybxJxW7oYLEW.jpg" alt="A Logitech G Driving Force Shifter on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="afbaa816-0ab5-4e5a-a576-8ccb46612653">            <a href="https://www.amazon.com/Playseat%C2%AE-Challenge-ActiFit-PlayStation/dp/B09MKT7PRZ/" data-model-name="Challenge Sim Racing Simulator Cockpit Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/YGTxKGLHf2jMKj5gj2Q7QR.jpg" alt="A Playseat Challenge X sim racing cockpit chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Challenge Sim Racing Simulator Cockpit Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="3def6010-6dee-4d50-85cd-f786e59d5340">            <a href="https://www.bestbuy.com/product/thrustmaster-t128-racing-wheel-for-playstation-4-5-and-pc-black/JXLH464JCC" data-model-name="T128 Racing Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/MhpikktmzTzCD4vDsup6rK.jpg" alt="A Thrustmaster T128 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T128 Racing Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0c1fe490-e9c0-455f-8cfc-02ae4b8ee960">            <a href="https://www.amazon.com/Logitech-featuring-TRUEFORCE-Feedback-Responsive/dp/B07PGGDJSG/" data-model-name="G923 Racing Wheel and Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Y4iC2s2LG5webm3RDsd9PE.jpg" alt="A Logitech G923 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G923 Racing Wheel and Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="44470ce7-e2d0-4327-a8ef-a1b0732231bd">            <a href="https://www.amazon.com/Thrustmaster-T300-Racing-Wheel-Playstation-3/dp/B01M1L2NRL/" data-model-name="T300RS GT Steering Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8qNJ4TU5M4csGaEcjGgtQc.jpg" alt="A Thrustmaster T300RS GT steering wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T300RS GT Steering Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fbc6a79c-926b-48d3-9475-df513dab310c">            <a href="https://www.logitechg.com/en-us/shop/p/pro-racing-pedals.941-000186" data-model-name="G Pro Racing Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8SR4utMV2UeAKTFCovu7o8.jpg" alt="Logitech G Pro sim racing pedals on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Pro Racing Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="d6866dbb-7cf3-4a63-9867-d11dbcb8a7fa">            <a href="https://us.mozaracing.com/products/r5-racing-bundle" data-model-name="R5 Bundle" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/84nvm6RXxmTX6MaZRbrXkk.jpg" alt="A Moza Racing R5 bundle with direct drive wheel and pedals"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>MOZA Racing</div>                                        <div class="featured__title">R5 Bundle</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="a5ff5583-98b0-4e49-960d-0b81ac22baa2">            <a href="https://www.amazon.com/Playseat-Trophy-Adjustable-Lightweight-Xbox-One/dp/B0BSTFS6W5/" data-model-name="Trophy - Logitech G Edition Sim Racing Cockpit" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/T4pubKM2EpF9GUEstywWUH.jpg" alt="A Playseat Trophy Logitech G Edition sim racing chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Trophy - Logitech G Edition Sim Racing Cockpit</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_standard" data-id="c4a29261-c1e0-4451-945e-d59353ecc61c">            <a href="https://www.amazon.com/Logitech-PRO-Racing-Wheel-Playstation/dp/B08W27XX75/" data-model-name="G Pro Racing Wheel" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Syk5iuxjdwq5uxqR5Hqdt3.jpg" alt="A Logitech G Pro racing wheel on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech G</div>                                        <div class="featured__title">G Pro Racing Wheel</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This discounted controller puts the standard Xbox pad to shame for just $64 as Amazon Prime Day wraps up ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Best Buy $63.99</a><a class="view-deal button" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>You can get a pretty good idea of the GameSir G7 Pro from the score we awarded it in <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">our review</a>: 92%. My colleague Shaun noting how impressive it is in feel and features for not a whole lot more money than an Xbox pad (<a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533" target="_blank">$49</a>). What's more convincing is that it's currently on sale at Best Buy.</p><p>You can grab the GameSir G7 Pro for <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64 in the Tech Fest sale</a>. That's a $16 saving.</p><p>The G7 Pro is currently our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best controller for PC</a>. It delivers a lot of features not expected of a controller in its price range. For starters, it uses optical micro switches for ABXY and comes with a mechanical D-pad—something often only expected of controllers with triple-digit price tags. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>It also has stick-drift resistant thumbsticks. I think we're way past using a potentiometer for a thumbstick these days, and it was back in 2024 that I called time on <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">stick drift for all my own future purchases</a>. Luckily, you don't have to look far for a better alternative. The G7 Pro uses TMR sensors to track the analog sticks with accuracy and without requiring a huge deadzone.</p><p>The triggers are Hall effect, though you can toggle a switch on the back of the controller to switch over to micro switches. This turns those triggers into clicky buttons. </p><p>Two more switches on the rear also lock or unlock the two rear paddle buttons. Such a good feature if, like me, you don't really care for extra buttons on the rear of the controller. There are a couple more of these on the G7 Pro: two mini bumpers up top.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mzeh9s5YwadiA8Yfj3F6gn.jpg" alt="An image of the GameSir G7 Pro gamepad sitting on a wooden surface" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G7 Pro is a wireless pad. It offers 2.4 GHz via a provided dongle, with a polling rate up to 1,000 Hz, and Bluetooth. It can also be connected via a USB Type-C cable. Though if you're just looking to charge the pad, it comes with a charging dock in the box. A neater solution for keeping it regularly charged. </p><p>One feature shared by the G7 Pro and the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is a gyroscope. The G7's Nexus software lets you map mouse, button, or stick input to the gyroscope for easy movement without a mouse.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YUAaJWMzjmuS3WAtFzP8dL.jpg" alt="GameSir G7 Pro's face buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TtbtcSpBQvgK5F6xrbsAT3.jpg" alt="GameSir G7 Pro's TMR equipped analog stick" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa.jpg" alt="The GameSir G7 Pro's directional pad in the foreground, with its two analog sticks in the background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Altogether, this controller is packed with features for not a lot of cash. </p><p>Shaun says it best in the final line of his review: "it packs pretty much every important pro feature into an $80 piece of kit that betters a lot of its more expensive competitors." Though, importantly, not $80 anymore. Just <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64</a>.</p><h2 id="check-out-best-buy-s-tech-fest-deals">👉 <a href="https://www.bestbuy.com/top-deals" target="_blank">Check out Best Buy's Tech Fest deals</a> 👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/this-discounted-controller-puts-the-standard-xbox-pad-to-shame-wireless-tmr-sticks-and-charging-stand-for-usd64/</link>
                                                                            <description>
                            <![CDATA[ There's so much better value beyond Microsoft and Sony for PC. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hqTceixKoxiQJ56gVBQhxe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 22 Jun 2026 13:14:39 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 10:05:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg">
                                                            <media:credit><![CDATA[Gamesir, Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:description>                                                            <media:text><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:text>
                                <media:title type="plain"><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Best Buy $63.99</a><a class="view-deal button" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>You can get a pretty good idea of the GameSir G7 Pro from the score we awarded it in <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">our review</a>: 92%. My colleague Shaun noting how impressive it is in feel and features for not a whole lot more money than an Xbox pad (<a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533" target="_blank">$49</a>). What's more convincing is that it's currently on sale at Best Buy.</p><p>You can grab the GameSir G7 Pro for <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64 in the Tech Fest sale</a>. That's a $16 saving.</p><p>The G7 Pro is currently our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best controller for PC</a>. It delivers a lot of features not expected of a controller in its price range. For starters, it uses optical micro switches for ABXY and comes with a mechanical D-pad—something often only expected of controllers with triple-digit price tags. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>It also has stick-drift resistant thumbsticks. I think we're way past using a potentiometer for a thumbstick these days, and it was back in 2024 that I called time on <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">stick drift for all my own future purchases</a>. Luckily, you don't have to look far for a better alternative. The G7 Pro uses TMR sensors to track the analog sticks with accuracy and without requiring a huge deadzone.</p><p>The triggers are Hall effect, though you can toggle a switch on the back of the controller to switch over to micro switches. This turns those triggers into clicky buttons. </p><p>Two more switches on the rear also lock or unlock the two rear paddle buttons. Such a good feature if, like me, you don't really care for extra buttons on the rear of the controller. There are a couple more of these on the G7 Pro: two mini bumpers up top.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mzeh9s5YwadiA8Yfj3F6gn.jpg" alt="An image of the GameSir G7 Pro gamepad sitting on a wooden surface" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G7 Pro is a wireless pad. It offers 2.4 GHz via a provided dongle, with a polling rate up to 1,000 Hz, and Bluetooth. It can also be connected via a USB Type-C cable. Though if you're just looking to charge the pad, it comes with a charging dock in the box. A neater solution for keeping it regularly charged. </p><p>One feature shared by the G7 Pro and the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is a gyroscope. The G7's Nexus software lets you map mouse, button, or stick input to the gyroscope for easy movement without a mouse.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YUAaJWMzjmuS3WAtFzP8dL.jpg" alt="GameSir G7 Pro's face buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TtbtcSpBQvgK5F6xrbsAT3.jpg" alt="GameSir G7 Pro's TMR equipped analog stick" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa.jpg" alt="The GameSir G7 Pro's directional pad in the foreground, with its two analog sticks in the background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Altogether, this controller is packed with features for not a lot of cash. </p><p>Shaun says it best in the final line of his review: "it packs pretty much every important pro feature into an $80 piece of kit that betters a lot of its more expensive competitors." Though, importantly, not $80 anymore. Just <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64</a>.</p><h2 id="check-out-best-buy-s-tech-fest-deals">👉 <a href="https://www.bestbuy.com/top-deals" target="_blank">Check out Best Buy's Tech Fest deals</a> 👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller demand is so high that new reservations won't be fulfilled until 2027 ]]></title>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-demand-is-so-high-that-new-reservations-wont-be-fulfilled-until-2027/</link>
                                                                            <description>
                            <![CDATA[ The queue system has been tweaked to give more useful shipping estimations, but they're not encouraging. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Q9R7Hac6FzTD35qhkGqoQP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 19 Jun 2026 01:26:31 +0000</pubDate>                                                                                                                                <updated>Fri, 19 Jun 2026 09:00:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-dualsense-can-still-drift-but-sony-may-be-exploring-magnetic-tech-for-dynamic-tactile-buttons-in-whatever-comes-next/</link>
                                                                            <description>
                            <![CDATA[ Worth a poke. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LoyndENoX6mCEFaRvoYtT6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qV2bVw74H2XnNEqc4BaVKH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 11:43:49 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/dualsense-pc-gamers-have-been-vindicated-at-last-as-haptic-support-is-finally-here-though-no-thanks-to-sony/</link>
                                                                            <description>
                            <![CDATA[ Power in your hands. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3jQuQwuX5vuxTkHH8RT7ih</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/N2YVAanjET8THrW4eQe7E3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 11:28:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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[ Father's Day is fast approaching, so I've picked out 12 awesome gift ideas for gaming dads without a single pair of socks to be found ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Father's Day is on <strong>Sunday, June 21</strong> this year, and if you're anything like me, you're already scrambling to think of something to buy. I've got good news for gaming dads, though—I've found 12 PC gaming gift ideas that would make any of them very, very happy indeed.</p><p>From mouse pads and tool sets to gaming controllers, mice, and chairs, there's definitely something here that will suit any gamer dad down to the ground. And indeed, suit any budget. Because whether you're looking for a high-end gift they'll cherish for years, or something small and affordable that'll demonstrate how much you've been paying attention to their hobbies, this list should pretty much cover it all.</p><p>Should you wish to really flash your cash this Father's Day, I'll also point you towards our <a href="https://www.pcgamer.com/gaming-laptop-deals/" target="_blank">cheap gaming laptop deals</a> and <a href="https://www.pcgamer.com/best-cheap-gaming-pc/" target="_blank">cheap gaming PC deals</a> pages. But for the rest of us looking for something more affordable, I reckon any of the 12 items below are perfect for the gamer dad in your life. And none of them are socks, I promise.</p><h3 class="article-body__section" id="section-pc-gaming-gifts-for-father-s-day"><span>PC gaming gifts for Father's Day</span></h3>        <div class="featured_product_block featured_block_hero" data-id="da38a603-3522-4734-9e4e-024588866aec">            <a href="https://www.amazon.com/CORSAIR-CH-9100020-WW-High-Performance-Optimized-Designed/dp/B01MS4C5WX/" data-model-name="MM100 Cloth Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/TcHrXMmJxHi3eVx6xQu2SG.jpg" alt="A Corsair MM100 cloth mouse pad on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">MM100 Cloth Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="840a488c-4762-4d54-a971-b5f747b5975a">            <a href="https://www.amazon.com/Precision-Screwdriver-Security-Cleaning-Doorbell/dp/B09PY8WQHJ/" data-model-name="40pcs Small Precision Magnetic Screwdriver Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/g7tVEDvp9o5vrvMRUeK5WQ.jpg" alt="A Jorest 40-piece small precision electronic screwdriver set in orange and black, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Jorest</div>                                        <div class="featured__title">40pcs Small Precision Magnetic Screwdriver Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="50958f75-3b32-427c-bda9-c129733ba8b3">            <a href="https://www.amazon.com/Anchor-ORIGINAL-Under-Desk-Headphone-Stand/dp/B00P31BMHG/" data-model-name="The Anchor™ - Under-Desk Headphone Holder" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/488A2DNRve9Dufgp8UCf7e.jpg" alt="The Anchor under-desk headphone holder, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Elevation Lab</div>                                        <div class="featured__title">The Anchor™ - Under-Desk Headphone Holder</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0feec9e2-964a-4d4b-8768-d8a3456138a8">            <a href="https://www.amazon.com/Govee-Brighter-Million-Controlled-Kitchen/dp/B07N1CMGQQ/" data-model-name="Smart RGB LED Strip Lights" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nXTRwbkuN2vHRVf2n2CamV.jpg" alt="A Govee Smart RGB LED strip light kit, with smartphone controls"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Govee</div>                                        <div class="featured__title">Smart RGB LED Strip Lights</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="69f92473-68dd-4436-b8b4-d0fae5b78c1e">            <a href="https://www.amazon.com/GameSir-Wireless-Controller-Bluetooth-Vibration/dp/B0CMCQ6WMC/" data-model-name="Nova Lite 2.4 GHz Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2bsh3ofwbGDMyduLRNBA6o.jpg" alt="A GameSir Nova Lite gaming controller in white with 2.4 GHz dongle, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>GameSir</div>                                        <div class="featured__title">Nova Lite 2.4 GHz Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="34ab16f6-68ff-4625-931b-bbb403cecf09">            <a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-model-name="G502 Hero Wired Gaming Mouse, " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uLARxS2csE52fvupn5TRcG.jpg" alt="A Logitech G502 Hero wired gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G502 Hero Wired Gaming Mouse, </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="2998e2c9-d76d-4176-b130-1552f246dc82">            <a href="https://www.amazon.com/Razer-Firefly-Gaming-Mouse-Built/dp/B07ZDWHL4M/" data-model-name="Firefly V2 Hardtop RGB Gaming Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zj9ykQdxFBTbjHJhgHMZEH.jpg" alt="A Razer Firefly V2 hard gaming mouse pad with RGB lighting on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Firefly V2 Hardtop RGB Gaming Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="490228c4-d43d-48e7-a887-9204506aa8cf">            <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" data-model-name="Ultimate 2 Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7c9tzEEypwafSSRErHPtXW.jpg" alt="An 8BitDo Ultimate 2 Wireless controller on its dock, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>8BitDo</div>                                        <div class="featured__title">Ultimate 2 Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="5779fd2b-2f21-4a6d-a01d-ec95299582ea">            <a href="https://www.amazon.com/SteelSeries-Apex-RGB-Gaming-Keyboard/dp/B07ZGDPT4M/" data-model-name="Apex 3 RGB Gaming Keyboard" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/G2XhMRfBzHq38pqDhndsif.jpg" alt="A SteelSeries Apex 3 full-size gaming keyboard, with RGB lighting lit up in rainbow colours on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>SteelSeries</div>                                        <div class="featured__title">Apex 3 RGB Gaming Keyboard</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="e7e5887e-0870-410b-8d9e-13418b5dfe1c">            <a href="https://www.amazon.com/Razer-BlackShark-HyperSpeed-Wireless-Headset/dp/B0FH5YWH7B/" data-model-name="Blackshark V3 X HyperSpeed Wireless Gaming Headset" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NhUg5QXvm4NuPfjGyRKte.jpg" alt="A Razer BlackShark V3X HyperSpeed wireless gaming headset on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Blackshark V3 X HyperSpeed Wireless Gaming Headset</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="674d6870-da44-480f-8d4f-458ebdbac574">            <a href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5R/" data-model-name="Viper V3 Pro Wireless Gaming Mouse" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/HMmAgtzXuaAonobZxWrFxG.jpg" alt="A Razer Viper V3 Pro gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Viper V3 Pro Wireless Gaming Mouse</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fe2e48fd-ac17-4273-bb11-a4318c8d0c9a">            <a href="https://www.amazon.com/Corsair-TC100-Relaxed-Gaming-Chair/dp/B0BN6RRD5V/" data-model-name="TC100 Relaxed Gaming Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/qz4uQF4pL5eoX8MdRMRwXd.jpg" alt="A Corsair TC100 Relaxed gaming chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">TC100 Relaxed Gaming Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/fathers-day-is-fast-approaching-so-ive-picked-out-12-awesome-gift-ideas-for-gaming-dads-without-a-single-pair-of-socks-to-be-found/</link>
                                                                            <description>
                            <![CDATA[ Dad does not need more socks. Dad needs PC gaming gear. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">u2aopUq2ZHjGsRThG47co9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RBUJarZ8iNjYTra89VY8jS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 09 Jun 2026 14:22:57 +0000</pubDate>                                                                                                                                <updated>Tue, 09 Jun 2026 14:23:14 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/RBUJarZ8iNjYTra89VY8jS-1280-80.jpg">
                                                            <media:credit><![CDATA[Corsair, Razer, GameSir, SteelSeries]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A gaming chair, gaming mouse, gaming keyboard, headset, mouse pad and game controller on a grey background]]></media:description>                                                            <media:text><![CDATA[A gaming chair, gaming mouse, gaming keyboard, headset, mouse pad and game controller on a grey background]]></media:text>
                                <media:title type="plain"><![CDATA[A gaming chair, gaming mouse, gaming keyboard, headset, mouse pad and game controller on a grey background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RBUJarZ8iNjYTra89VY8jS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Father's Day is on <strong>Sunday, June 21</strong> this year, and if you're anything like me, you're already scrambling to think of something to buy. I've got good news for gaming dads, though—I've found 12 PC gaming gift ideas that would make any of them very, very happy indeed.</p><p>From mouse pads and tool sets to gaming controllers, mice, and chairs, there's definitely something here that will suit any gamer dad down to the ground. And indeed, suit any budget. Because whether you're looking for a high-end gift they'll cherish for years, or something small and affordable that'll demonstrate how much you've been paying attention to their hobbies, this list should pretty much cover it all.</p><p>Should you wish to really flash your cash this Father's Day, I'll also point you towards our <a href="https://www.pcgamer.com/gaming-laptop-deals/" target="_blank">cheap gaming laptop deals</a> and <a href="https://www.pcgamer.com/best-cheap-gaming-pc/" target="_blank">cheap gaming PC deals</a> pages. But for the rest of us looking for something more affordable, I reckon any of the 12 items below are perfect for the gamer dad in your life. And none of them are socks, I promise.</p><h3 class="article-body__section" id="section-pc-gaming-gifts-for-father-s-day"><span>PC gaming gifts for Father's Day</span></h3>        <div class="featured_product_block featured_block_hero" data-id="da38a603-3522-4734-9e4e-024588866aec">            <a href="https://www.amazon.com/CORSAIR-CH-9100020-WW-High-Performance-Optimized-Designed/dp/B01MS4C5WX/" data-model-name="MM100 Cloth Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/TcHrXMmJxHi3eVx6xQu2SG.jpg" alt="A Corsair MM100 cloth mouse pad on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">MM100 Cloth Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="840a488c-4762-4d54-a971-b5f747b5975a">            <a href="https://www.amazon.com/Precision-Screwdriver-Security-Cleaning-Doorbell/dp/B09PY8WQHJ/" data-model-name="40pcs Small Precision Magnetic Screwdriver Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/g7tVEDvp9o5vrvMRUeK5WQ.jpg" alt="A Jorest 40-piece small precision electronic screwdriver set in orange and black, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Jorest</div>                                        <div class="featured__title">40pcs Small Precision Magnetic Screwdriver Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="50958f75-3b32-427c-bda9-c129733ba8b3">            <a href="https://www.amazon.com/Anchor-ORIGINAL-Under-Desk-Headphone-Stand/dp/B00P31BMHG/" data-model-name="The Anchor™ - Under-Desk Headphone Holder" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/488A2DNRve9Dufgp8UCf7e.jpg" alt="The Anchor under-desk headphone holder, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Elevation Lab</div>                                        <div class="featured__title">The Anchor™ - Under-Desk Headphone Holder</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0feec9e2-964a-4d4b-8768-d8a3456138a8">            <a href="https://www.amazon.com/Govee-Brighter-Million-Controlled-Kitchen/dp/B07N1CMGQQ/" data-model-name="Smart RGB LED Strip Lights" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nXTRwbkuN2vHRVf2n2CamV.jpg" alt="A Govee Smart RGB LED strip light kit, with smartphone controls"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Govee</div>                                        <div class="featured__title">Smart RGB LED Strip Lights</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="69f92473-68dd-4436-b8b4-d0fae5b78c1e">            <a href="https://www.amazon.com/GameSir-Wireless-Controller-Bluetooth-Vibration/dp/B0CMCQ6WMC/" data-model-name="Nova Lite 2.4 GHz Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2bsh3ofwbGDMyduLRNBA6o.jpg" alt="A GameSir Nova Lite gaming controller in white with 2.4 GHz dongle, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>GameSir</div>                                        <div class="featured__title">Nova Lite 2.4 GHz Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="34ab16f6-68ff-4625-931b-bbb403cecf09">            <a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-model-name="G502 Hero Wired Gaming Mouse, " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uLARxS2csE52fvupn5TRcG.jpg" alt="A Logitech G502 Hero wired gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G502 Hero Wired Gaming Mouse, </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="2998e2c9-d76d-4176-b130-1552f246dc82">            <a href="https://www.amazon.com/Razer-Firefly-Gaming-Mouse-Built/dp/B07ZDWHL4M/" data-model-name="Firefly V2 Hardtop RGB Gaming Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zj9ykQdxFBTbjHJhgHMZEH.jpg" alt="A Razer Firefly V2 hard gaming mouse pad with RGB lighting on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Firefly V2 Hardtop RGB Gaming Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="490228c4-d43d-48e7-a887-9204506aa8cf">            <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" data-model-name="Ultimate 2 Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7c9tzEEypwafSSRErHPtXW.jpg" alt="An 8BitDo Ultimate 2 Wireless controller on its dock, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>8BitDo</div>                                        <div class="featured__title">Ultimate 2 Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="5779fd2b-2f21-4a6d-a01d-ec95299582ea">            <a href="https://www.amazon.com/SteelSeries-Apex-RGB-Gaming-Keyboard/dp/B07ZGDPT4M/" data-model-name="Apex 3 RGB Gaming Keyboard" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/G2XhMRfBzHq38pqDhndsif.jpg" alt="A SteelSeries Apex 3 full-size gaming keyboard, with RGB lighting lit up in rainbow colours on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>SteelSeries</div>                                        <div class="featured__title">Apex 3 RGB Gaming Keyboard</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="e7e5887e-0870-410b-8d9e-13418b5dfe1c">            <a href="https://www.amazon.com/Razer-BlackShark-HyperSpeed-Wireless-Headset/dp/B0FH5YWH7B/" data-model-name="Blackshark V3 X HyperSpeed Wireless Gaming Headset" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NhUg5QXvm4NuPfjGyRKte.jpg" alt="A Razer BlackShark V3X HyperSpeed wireless gaming headset on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Blackshark V3 X HyperSpeed Wireless Gaming Headset</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="674d6870-da44-480f-8d4f-458ebdbac574">            <a href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5R/" data-model-name="Viper V3 Pro Wireless Gaming Mouse" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/HMmAgtzXuaAonobZxWrFxG.jpg" alt="A Razer Viper V3 Pro gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Viper V3 Pro Wireless Gaming Mouse</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fe2e48fd-ac17-4273-bb11-a4318c8d0c9a">            <a href="https://www.amazon.com/Corsair-TC100-Relaxed-Gaming-Chair/dp/B0BN6RRD5V/" data-model-name="TC100 Relaxed Gaming Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/qz4uQF4pL5eoX8MdRMRwXd.jpg" alt="A Corsair TC100 Relaxed gaming chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">TC100 Relaxed Gaming Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </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>
                                                                                                <dc:content><![CDATA[ <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"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2059838687148703866"><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></figure><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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/basically-lego-for-gamers-this-new-game-controller-has-modular-buttons-sticks-grips-and-even-vibration-motors/</link>
                                                                            <description>
                            <![CDATA[ I do wish the aesthetic was nicer, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NgVdCuckfL32UyFLPF7N2A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/p5gwpavUKsk4mk56creqaj-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 29 May 2026 11:22:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2059838687148703866"><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></figure><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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/arguments-that-the-steam-controllers-competition-is-from-microsoft-or-sony-is-categorically-wrong-its-from-third-party-vendors/</link>
                                                                            <description>
                            <![CDATA[ Long gone are the days when third party was for player two. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vezz6b83Z7dZwtEmYZVDBn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 23 May 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <figure><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><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/you-need-to-know-the-steam-controllers-charging-puck-is-always-live-so-if-you-accidentally-touch-it-with-something-conductive-youre-in-for-a-shock/</link>
                                                                            <description>
                            <![CDATA[ It's not an issue exclusive to Valve's hardware, but at the same time, it's something that shouldn't really exist ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yJpDucP8dQkJJ8TdpxZm8o</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 22 May 2026 10:26:50 +0000</pubDate>                                                                                                                                <updated>Fri, 22 May 2026 16:45:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick, gaming, and computers all first met in the early 1980s. After leaving university, he became a physics and IT teacher and started writing about tech in the late 1990s. That resulted in him working with MadOnion to write the help files for 3DMark and PCMark. After a short stint working at Beyond3D.com, Nick joined Futuremark (MadOnion rebranded) full-time, as editor-in-chief for its PC gaming section, YouGamers. After the site shutdown, he became an engineering and computing lecturer for many years, but missed the writing bug. Cue four years at TechSpot.com covering everything and anything to do with tech and PCs. He freely admits to being far too obsessed with GPUs and open-world grindy RPGs, but who isn&#039;t these days?&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                <figure><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><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><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[ Don't buy an Xbox controller when you can get one with drift-free TMR sticks, 8x the polling rate, and a charging stand for less at Amazon ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tETQ5DGMQn7RgEfWDyxvna" name="PCGamer Deal Block (57)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tETQ5DGMQn7RgEfWDyxvna.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With an included charging dock/wireless receiver, TMR thumbsticks, and 1,000 Hz polling, the D10 has pro-level features at a value-oriented price. Both the black and purple models are included in the sale. </p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 1,000 Hz polling | Wired and wireless</strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow" data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99">View Deal</a></p></div><p>There was once a time when Microsoft's Xbox Controller was at the top of the pile, thanks to its great feel and sturdy weight. Since testing out the offerings of GameSir, 8BitDo, and EasySMX, I can say that time is no longer. </p><p>Right now, for <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">$50 at Amazon</a>, you can get the <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">EasySMX D10</a>: a comfortable and snappy controller with unique lighting and top-notch specs. You're only getting a $10 discount with this deal, but it's still one of the most reasonably priced controllers out there today. </p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>Technically, that's not cheaper than the Xbox controller, because <a href="www.amazon.com/Xbox-Wireless-Gaming-Controller-Velocity-Console/dp/B0DT5SQ84T" target="_blank">Microsoft's gamepad is also on sale</a>, but when you factor in the optional wireless adapter you need to actually play the Xbox controller wirelessly on PC, you're paying significantly more for the Xbox pad, and getting an inferior pick. </p><p>Let's start with the obvious. The D10's TMR sticks and Hall effect triggers not only make it snappier than the Xbox pad, but also mean it's less likely to break down in 12 months. If you're sick of stick drift, EasySMX has you covered.</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/L8ifj69LrNhoXWT93JJHF5.jpg" alt="EasySMX D10 (off) on a charging stand on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The polling rate of 1,000 Hz is also eight times greater than the measly 125 Hz in the Xbox controller, which means it sends responses to your PC eight times more frequently. Though it's very much debatable how much value you get out of anything greater than 1,000 Hz, it has become the sweet spot for battery efficiency/speed. </p><p>I really like the D10's dock, too. Like the controller, it's covered in RGB, and the dock comes with a small USB port to slot in the 2.4 GHz receiver. This means it can both charge your controller when you're done gaming for the night and connect it to your PC, from a single cable. It's neat and tidy. </p><p>Thanks in part to the chunky build and asymmetrical sticks, it's actually quite a similar controller to the Xbox controller. Its weight is comfortable, and it fits smoothly in my palms. </p><figure role="gallery"><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/79wLwkLR2JGn3Y66EfUpD5.jpg" alt="the back of the EasySMX D10 in a hand, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>If you want to spend even less and don't particularly care about RGB or TMR sticks, the <a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">EasySMX D05</a> is also on sale—<a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">$10 cheaper than the D10</a>— and is also well worth considering. </p><p>I've been testing this controller out for a few months now, and I'm a big fan. The only real caveats I have to bring to the table are that I think its triggers and D-pads are merely okay, and this is an area where Microsoft take a win. As well as this, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> is a better controller for pure feel, though it is around $30 more expensive than the EasySMX D10. </p><p>Still, after getting my hands on tons of controllers over the last few years, I can say the D10 offers excellent value, and I'd be picking it over the Xbox controller pretty much any day of the week, and that's only partly because the charging stand means I'll never let the battery go dry. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/dont-buy-an-xbox-controller-when-you-can-get-one-with-drift-free-tmr-sticks-8x-the-polling-rate-and-a-charging-stand-for-less-at-amazon/</link>
                                                                            <description>
                            <![CDATA[ The D10 is a bit of a beast. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cBVHRNqRUBeFRKqrM3bKiT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2f53R8FqFudzkQitejXFC9-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 20 May 2026 12:18:19 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2f53R8FqFudzkQitejXFC9-1280-80.jpg">
                                                            <media:credit><![CDATA[EasySMX]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The purple and black EasySMX D10 on a pink deals background]]></media:description>                                                            <media:text><![CDATA[The purple and black EasySMX D10 on a pink deals background]]></media:text>
                                <media:title type="plain"><![CDATA[The purple and black EasySMX D10 on a pink deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2f53R8FqFudzkQitejXFC9-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tETQ5DGMQn7RgEfWDyxvna" name="PCGamer Deal Block (57)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tETQ5DGMQn7RgEfWDyxvna.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With an included charging dock/wireless receiver, TMR thumbsticks, and 1,000 Hz polling, the D10 has pro-level features at a value-oriented price. Both the black and purple models are included in the sale. </p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 1,000 Hz polling | Wired and wireless</strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow" data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99">View Deal</a></p></div><p>There was once a time when Microsoft's Xbox Controller was at the top of the pile, thanks to its great feel and sturdy weight. Since testing out the offerings of GameSir, 8BitDo, and EasySMX, I can say that time is no longer. </p><p>Right now, for <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">$50 at Amazon</a>, you can get the <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">EasySMX D10</a>: a comfortable and snappy controller with unique lighting and top-notch specs. You're only getting a $10 discount with this deal, but it's still one of the most reasonably priced controllers out there today. </p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>Technically, that's not cheaper than the Xbox controller, because <a href="www.amazon.com/Xbox-Wireless-Gaming-Controller-Velocity-Console/dp/B0DT5SQ84T" target="_blank">Microsoft's gamepad is also on sale</a>, but when you factor in the optional wireless adapter you need to actually play the Xbox controller wirelessly on PC, you're paying significantly more for the Xbox pad, and getting an inferior pick. </p><p>Let's start with the obvious. The D10's TMR sticks and Hall effect triggers not only make it snappier than the Xbox pad, but also mean it's less likely to break down in 12 months. If you're sick of stick drift, EasySMX has you covered.</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/L8ifj69LrNhoXWT93JJHF5.jpg" alt="EasySMX D10 (off) on a charging stand on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The polling rate of 1,000 Hz is also eight times greater than the measly 125 Hz in the Xbox controller, which means it sends responses to your PC eight times more frequently. Though it's very much debatable how much value you get out of anything greater than 1,000 Hz, it has become the sweet spot for battery efficiency/speed. </p><p>I really like the D10's dock, too. Like the controller, it's covered in RGB, and the dock comes with a small USB port to slot in the 2.4 GHz receiver. This means it can both charge your controller when you're done gaming for the night and connect it to your PC, from a single cable. It's neat and tidy. </p><p>Thanks in part to the chunky build and asymmetrical sticks, it's actually quite a similar controller to the Xbox controller. Its weight is comfortable, and it fits smoothly in my palms. </p><figure role="gallery"><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/79wLwkLR2JGn3Y66EfUpD5.jpg" alt="the back of the EasySMX D10 in a hand, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>If you want to spend even less and don't particularly care about RGB or TMR sticks, the <a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">EasySMX D05</a> is also on sale—<a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">$10 cheaper than the D10</a>— and is also well worth considering. </p><p>I've been testing this controller out for a few months now, and I'm a big fan. The only real caveats I have to bring to the table are that I think its triggers and D-pads are merely okay, and this is an area where Microsoft take a win. As well as this, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> is a better controller for pure feel, though it is around $30 more expensive than the EasySMX D10. </p><p>Still, after getting my hands on tons of controllers over the last few years, I can say the D10 offers excellent value, and I'd be picking it over the Xbox controller pretty much any day of the week, and that's only partly because the charging stand means I'll never let the battery go dry. </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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/hear-the-steam-controller-sing-whole-songs-with-haptics-including-the-wii-store-soundtrack-still-alive-and-even-attempt-a-rick-roll/</link>
                                                                            <description>
                            <![CDATA[ This was a triumph. I'm making a note here, 'huge success'. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yw3oLW8un3JcQr3SGBzNoA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 13:23:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w">Average valve W</a><figcaption><cite> from <a href="https://www.reddit.com/r/Steam">r/Steam</a></cite></figcaption></blockquote></figure><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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/average-valve-w-after-some-steam-controller-packages-were-sent-to-the-wrong-country-valve-is-reportedly-giving-any-standard-edition-title-to-affected-shoppers/</link>
                                                                            <description>
                            <![CDATA[ Apparently, a small number of packages were accidentally sent to the UK. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dbwuzoxCEmvcEUiGgBhQLm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 11:54:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w">Average valve W</a><figcaption><cite> from <a href="https://www.reddit.com/r/Steam">r/Steam</a></cite></figcaption></blockquote></figure><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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/leaked-xbox-elite-3-controller-images-show-at-least-one-oddball-addition-but-itll-struggle-to-compete-in-a-radically-changed-market/</link>
                                                                            <description>
                            <![CDATA[ Gamepads are better, and cheaper, than they've ever been. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qaT6DtsnjEHBcZpp8FjbgH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 14 May 2026 23:14:27 +0000</pubDate>                                                                                                                                <updated>Thu, 14 May 2026 23:41:12 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:description>                                                            <media:text><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:text>
                                <media:title type="plain"><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Earlier today, Brazilian tech outlet <a href="https://tecnoblog.net/noticias/este-e-o-novo-controle-da-microsoft-para-xbox-cloud-gaming/">Tecnoblog</a> published images of two unannounced Xbox controllers reportedly obtained from the country's telecommunications regulator. One is a small form factor gamepad designed for cloud gaming, resembling similar third-party gamepads by the likes of 8bitDo. The other is the successor to the Xbox Elite Controller 2.</p><p>I've been looking forward to news about this gamepad because, since the last iteration released in 2019, the whole landscape for gamepads has changed. Nowadays a third-party gamepad with all the pro accoutrements—rear paddle buttons, interchangeable D-pads, replaceable sticks—can be had for bargain prices, or at least, well below the Series 2's $180 going price. The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">Gamesir G7 Pro</a>, for example, which is in some ways <em>more </em>feature-rich, goes for $80. What can a titan like Microsoft do to stand out?</p><p>Microsoft obviously hasn't announced this controller, we don't know its price, and we don't know the full extent of its features. But based on the images and Tecnoblog's intel from the regulator's documents, it's a curious beast, chiefly due to what resembles two scroll wheels on either side of the headphone jack.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:880px;"><p class="vanilla-image-block" style="padding-top:47.50%;"><img id="XLTJeF6dikV6iMn8FdppzV" name="xbox-elite-3-2113-4" alt="The scroll wheels on the Xbox Elite 3 controller" src="https://cdn.mos.cms.futurecdn.net/XLTJeF6dikV6iMn8FdppzV.webp" mos="" align="middle" fullscreen="" width="880" height="418" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>What could these be for? Tecnoblog speculates they could be designed for flight sims, but that seems like an extremely niche focus: I reckon flight sim fanatics would prefer proper flight sim peripherals. How would they be implemented in far more mainstream games, like FPSes? </p><p>Here's two more images from Tecnoblog:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:658px;"><p class="vanilla-image-block" style="padding-top:72.95%;"><img id="ZGGiTRX7kLSWhtfk9wfqV9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/ZGGiTRX7kLSWhtfk9wfqV9.webp" mos="" align="middle" fullscreen="" width="658" height="480" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:739px;"><p class="vanilla-image-block" style="padding-top:53.59%;"><img id="LqhMQz4z6P8AX2VHXoBGX9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/LqhMQz4z6P8AX2VHXoBGX9.webp" mos="" align="middle" fullscreen="" width="739" height="396" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>Based on the images alone, that's about as radical as the Elite 3 controller gets. Like the previous model it'll have interchangeable rear paddles, and swappable sticks and D-pads. That middle button just under the Xbox button switches between local and cloud modes, the latter connecting to Xbox Cloud Gaming servers. The battery is still rechargeable and replaceable albeit smaller.</p><p>One thing that's impossible to glean from the images is the thing that's most important. Will Microsoft implement drift-free Hall Effect technology in the analog sticks, thus eliminating the ever-present fear of stick drift? Or might they implement Tunnel Magnetoresistance (TMR) sticks, which are similarly drift-free, but marginally more accurate? </p><p>Let's be blunt: If they don't implement either it's a non-starter. As I've written before, in 2026 you should <em>refuse</em> to buy any controller that comes with the problems endemic to Sony, Xbox, and Nintendo's controllers. You can buy third-party Hall Effect controllers for a pittance nowadays.</p><p>I'm also—I won't lie—kinda bored by the Elite 3 controller. Why would I buy this instead of the Steam Controller which has those still severely underrated trackpads? Valve's controller has TMR sticks as well, and while its rear paddle buttons are baked in and there's only two of them, I reckon four paddle buttons is a more niche proposition than trackpads (<a href="https://www.pcgamer.com/hardware/game-pads/i-cant-live-without-the-steam-decks-trackpads-anymore-and-i-hope-the-steam-controller-forces-the-competition-to-adopt-them">time will prove me right!</a>).</p><p>The smaller controller is very much a meat and potatoes affair: it's got all the usual features without any of the pro trimmings, it's remarkably small and designed for carrying around, and bears the same new toggle button beneath the Xbox button.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1060px;"><p class="vanilla-image-block" style="padding-top:50.38%;"><img id="2ecbzfxFCrq3vKiM5UVhwc" name="controle-xbox-montagem-1060x534" alt="The new, unannounced Xbox controller" src="https://cdn.mos.cms.futurecdn.net/2ecbzfxFCrq3vKiM5UVhwc.webp" mos="" align="middle" fullscreen="" width="1060" height="534" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>When will these be properly announced? Microsoft hasn't given any hints, but my best guess would be at its Xbox Games Showcase on June 7, which happens as part of <a href="https://www.pcgamer.com/gaming-industry/events-conferences/summer-game-fest-2026/">Summer Game Fest 2026</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2YRoe"></div>                            </div>                            <script src="https://kwizly.com/embed/W2YRoe.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Here's when the Steam Controller will be available again in Australia, and I hope you like being awake at 3am ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Steam Controller launched on Tuesday in Australia and promptly sold out. It's perhaps not surprising, but it sure is <em>annoying</em>. As a result of the rush—and to combat opportunistic resellers—Valve has announced it will kick off a reservation queue for the next drop. </p><p>The queue will reopen tomorrow, May 9 at 3am AEST. Yes, that's a somewhat inconvenient time to reserve your placement in a digital queue, but Australians should be used to this. Keep in mind it's a queue: getting in line at 3:01am tomorrow morning won't mean you'll have your controller immediately, but it'll mean you'll get one before everyone else.</p><p>As per Valve, reservations may take a while to fulfil in Australia. "Replenishment of inventory will vary from region to region. We will start fulfilling reservations next week in the US / Canada, and UK / EU / AU in the following weeks."</p><p>Only one Steam Controller can be reserved per Steam account, and once you've received the order email you'll need to make the purchase within 72 hours. Also, if you've already bought a Steam Controller, you're not eligible to be a part of this queue: sorry, it's everyone else's turn.</p><p>As Ted Litchfield <a href="https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/">pointed out</a> earlier today, this is the same process Valve resorted to when the Steam Deck was first launched. It's obviously not as convenient as buying something and expecting it to ship immediately, but then, if it means controllers fall into the hands of actual users <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">and not eBay resellers</a>, it's definitely for the best.</p><p>The Steam Controller costs AU$149 in Australia, with shipping included. Valve didn't specify exactly where the reservation page will be, but my best guess is on the <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">Steam Controller listing</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/heres-when-the-steam-controller-will-be-available-again-in-australia-and-i-hope-you-like-being-awake-at-3am/</link>
                                                                            <description>
                            <![CDATA[ It's time to start feeling anxious. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xwe8megd55zr9atz7kKDUa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 08 May 2026 03:33:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Steam Controller launched on Tuesday in Australia and promptly sold out. It's perhaps not surprising, but it sure is <em>annoying</em>. As a result of the rush—and to combat opportunistic resellers—Valve has announced it will kick off a reservation queue for the next drop. </p><p>The queue will reopen tomorrow, May 9 at 3am AEST. Yes, that's a somewhat inconvenient time to reserve your placement in a digital queue, but Australians should be used to this. Keep in mind it's a queue: getting in line at 3:01am tomorrow morning won't mean you'll have your controller immediately, but it'll mean you'll get one before everyone else.</p><p>As per Valve, reservations may take a while to fulfil in Australia. "Replenishment of inventory will vary from region to region. We will start fulfilling reservations next week in the US / Canada, and UK / EU / AU in the following weeks."</p><p>Only one Steam Controller can be reserved per Steam account, and once you've received the order email you'll need to make the purchase within 72 hours. Also, if you've already bought a Steam Controller, you're not eligible to be a part of this queue: sorry, it's everyone else's turn.</p><p>As Ted Litchfield <a href="https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/">pointed out</a> earlier today, this is the same process Valve resorted to when the Steam Deck was first launched. It's obviously not as convenient as buying something and expecting it to ship immediately, but then, if it means controllers fall into the hands of actual users <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">and not eBay resellers</a>, it's definitely for the best.</p><p>The Steam Controller costs AU$149 in Australia, with shipping included. Valve didn't specify exactly where the reservation page will be, but my best guess is on the <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">Steam Controller listing</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controllers to come back in stock with reprise of Steam Deck reservation system ]]></title>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/</link>
                                                                            <description>
                            <![CDATA[ I shall have my revenge. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KA2h2KumLg2gEGYFQhpXsC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 18:32:04 +0000</pubDate>                                                                                                                                <updated>Fri, 08 May 2026 10:59:08 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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="low" 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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/valve-releases-the-cad-files-for-the-steam-controller-and-its-puck-no-doubt-ushering-in-an-era-of-unholy-3d-printed-creations/</link>
                                                                            <description>
                            <![CDATA[ Making it your own. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FDTsw6BBMeysFqkQtDqDt9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 06 May 2026 14:11:33 +0000</pubDate>                                                                                                                                <updated>Thu, 07 May 2026 09:55:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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="low" 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>
                                                                                                <dc:content><![CDATA[ <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" cite="https://bsky.app/profile/valvesoftware.com/post/3ml4kyx4nns2w"><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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more/</link>
                                                                            <description>
                            <![CDATA[ Pray tell of thy knobs, Valve. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">W3ZmhyacvomBhkeRNBK7B3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/R2QsUpHPTpF2WkaMNJXVMY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 05 May 2026 16:53:57 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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" cite="https://bsky.app/profile/valvesoftware.com/post/3ml4kyx4nns2w"><p lang="en">Steam Controller ran out faster than we anticipated, and we hate that not everyone who wanted one was able to get it. We’re working on getting more in stock and will have an update on expected timeline soon.</p>— @valvesoftware.com (<a href="https://bsky.app/profile/did:plc:yqtd2qj44va6cneamdsgdaez?ref_src=embed">@valvesoftware.com.bsky.social</a>) <a href="https://bsky.app/profile/valvesoftware.com/post/3ml4kyx4nns2w">2026-05-05T16:51:33.866Z</a></blockquote><p>Prior to the launch of the Steam Controller, we spoke to <a href="https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/" target="_blank">Lawrence Yang and Steve Cardinali</a>, both of whom worked on the controller, about availability. In that chat, the two seemed confident about supply.</p><p>"We have built up a good supply of this," Cardinali said at the time. Though he noted that this was based on anticipated demand, which, by its own admission today, was lower than reality.</p><p>"But it's based on what we anticipate supply to be. And supply could be much larger than we anticipate. In which case our production has a finite limit on how much we can make. And we'll do our best to keep up with demand if it greatly exceeds our expectations."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Yang then told us that Valve has knobs it can turn; one would expect this entails additional orders with manufacturers and assembly capacity to better meet demand.</p><p>"We have knobs we can turn to try to get things to people faster," says Cardinali. "It's complicated and you know the mass production machine is a big machine with a lot of momentum. So, depending on how it goes for the first chunk of time, if we have high demand and it stays high demand, there are things we can do to help alleviate that down the road."</p><p>The flipside for Valve is how far do you go? Do you risk making too many, which leads to a surplus and high inventory, or try to eke out supply to meet demand over a longer period of time, as it did with the Steam Deck? Valve was stuck with a heaps of excess inventory for the <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">original Steam Controller</a>, though that's not going to be a concern here: the new controller is off to a fine start by comparison.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BFyCvxhF5rvguJAynziMSY" name="IMG_4181_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>"If we're like, 'oh, we actually probably need to make more' then we can turn that knob up and have them producing more," Yang says.</p><p>The downside to this higher than anticipated demand is that the Steam Controller has already gained attention from scalpers. Some have been <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">selling the controller on eBay for $300</a>, which is a 200% markup, though these appear to be drying up from a cursory look. Potentially as these listings are reported or bought then cancelled over and over again, to make the listings untenable—a strategy we saw employed with graphics cards during shortages. </p><p>But, hey, there's sure to be plenty of supply for controllers in the long-run. From my <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/" target="_blank">dive inside the controller</a>, there's little here to pose a supply-side risk. No RAM, no storage, just a couple sensors, PCBs and SoCs. While it does take a while to get things shipped around the globe, resupply shouldn't pose a huge issue.</p><p>"We try to build enough wiggle room so that we can try not to be out of stock for a really long time," Yang says, rather hopefully.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller is sold out in most regions, but Australia—you still have a chance (Update: Too late it's gone) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Steam Controller is now <strong>sold out</strong> in Australia.</p><p>Pre-orders for the Steam Controller went live overnight and <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/">quickly sold out</a>. Not only that, the rush briefly brought down Steam in its entirety. I didn't expect the demand to be that high, nor apparently did Valve.</p><p>Demand hasn't proven so high in Australia though, because it's <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">very much still available</a> down under. It'll ship in 6-10 business days—more than the usual 3-5 business days—which implies a bunch of people <em>have </em>bought it.</p><p>The lingering availability mirrors the Steam Deck situation in Australia. Whereas Valve's handheld devices have suffered long unavailability in most other regions, they've been consistently available in Australia. </p><p>Does that mean we're buying them less down here? It's possible, though Valve's handheld did hit the market much later than in the northern hemisphere. The Steam Controller's availability could also have something to do with pre-orders launching in the dead of night in Australia: it may only be a matter of hours before they're gone.</p><p>Whatever the case, if you're an Australian and want a Steam Controller you're currently not at the mercy of scalpers, who are <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">turning a tidy profit</a> in regions where the device is sold out. It's still available for its normal price of AU$149.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-is-sold-out-in-most-regions-but-australia-you-still-have-a-chance/</link>
                                                                            <description>
                            <![CDATA[ How long will it last? Probably not long. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xCdxJvQoH9GiRNfmwGs4kF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 04 May 2026 23:17:11 +0000</pubDate>                                                                                                                                <updated>Tue, 05 May 2026 01:01:17 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Steam Controller is now <strong>sold out</strong> in Australia.</p><p>Pre-orders for the Steam Controller went live overnight and <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/">quickly sold out</a>. Not only that, the rush briefly brought down Steam in its entirety. I didn't expect the demand to be that high, nor apparently did Valve.</p><p>Demand hasn't proven so high in Australia though, because it's <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">very much still available</a> down under. It'll ship in 6-10 business days—more than the usual 3-5 business days—which implies a bunch of people <em>have </em>bought it.</p><p>The lingering availability mirrors the Steam Deck situation in Australia. Whereas Valve's handheld devices have suffered long unavailability in most other regions, they've been consistently available in Australia. </p><p>Does that mean we're buying them less down here? It's possible, though Valve's handheld did hit the market much later than in the northern hemisphere. The Steam Controller's availability could also have something to do with pre-orders launching in the dead of night in Australia: it may only be a matter of hours before they're gone.</p><p>Whatever the case, if you're an Australian and want a Steam Controller you're currently not at the mercy of scalpers, who are <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">turning a tidy profit</a> in regions where the device is sold out. It's still available for its normal price of AU$149.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ eBay resellers are turning a tidy profit on Steam Controllers ]]></title>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/</link>
                                                                            <description>
                            <![CDATA[ Valve's new Steam Controller sold out quickly, creating an opportunity for tech scalpers. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Z7Xh7g6gCt8YKiLpNkFhUR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/N5LjdCUeFRwxbkLri6SyKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 04 May 2026 22:03:19 +0000</pubDate>                                                                                                                                <updated>Mon, 04 May 2026 23:03:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ tyler@pcgamer.com (Tyler Wilde) ]]></author>                    <dc:creator><![CDATA[ Tyler Wilde ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/rGvfSUkSBEPzBAVS3jRh9E.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Tyler grew up in Silicon Valley during the &#039;80s and &#039;90s, playing games like Zork and Arkanoid on early PCs. He was later captivated by Myst, SimCity, Civilization, Command &amp; Conquer, all the shooters they call &quot;boomer shooters&quot; now, and PS1 classic Bushido Blade (that&#039;s right: he had Bleem!). Tyler joined PC Gamer in 2011, and today he&#039;s focused on the site&#039;s news coverage. His hobbies include amateur boxing and adding to his 1,200-plus hours in Rocket League.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/</link>
                                                                            <description>
                            <![CDATA[ The situation is fluid. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mLkvLAu5TomJNYvocH9yug</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/93GTj89rWiRZsHuLFPBAHm-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 04 May 2026 17:52:06 +0000</pubDate>                                                                                                                                <updated>Mon, 04 May 2026 18:00:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Gamesir G7 Pro 8K" data-widget-title=""></div><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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/</link>
                                                                            <description>
                            <![CDATA[ Would you pay $10 more for higher polling? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LxaJz5yKcWogc5hm5z84mj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uT6Y9ABVa5DY9xXcAJrEwf-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 01 May 2026 11:37:15 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 11:41:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                <div data-widget-type="review" data-model-name="Gamesir G7 Pro 8K" data-widget-title=""></div><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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/raspberry-pi-based-homebrew-dongle-enables-full-wireless-sony-dualsense-controller-functionality-on-the-pc-including-haptics/</link>
                                                                            <description>
                            <![CDATA[ With better latency than a generic Bluetooth dongle, too? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">N9aktUyZKnRUeNgh5vy4CN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 30 Apr 2026 15:56:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jeremy Laird ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/weve-never-met-a-cult-we-didnt-want-to-be-a-part-of-so-were-getting-in-on-the-ground-floor-dbrand-announces-skins-for-the-new-steam-controller-in-the-most-dbrand-way/</link>
                                                                            <description>
                            <![CDATA[ Head-turning for the right reasons? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JxxRbUeuCxsxmjRsxjQ2mF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bxyZgtA6VebY5mV5nSh93-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 28 Apr 2026 15:05:52 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bxyZgtA6VebY5mV5nSh93-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bxyZgtA6VebY5mV5nSh93-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The cat is out of the bag: The new Steam Controller will be available to purchase for $99/€99/£85/$149 AUD <a href="https://www.pcgamer.com/hardware/controllers/valves-new-steam-controller-goes-on-sale-next-week/" target="_blank">from next week</a>, and <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">our verdict on the new hardware is already in</a> (spoilers, we like it). The May launch will only introduce one, all-over black colourway to go with all your other noir hardware. Thankfully, gaming accessory company Dbrand is set to offer a few more colourful options.</p><p><a href="https://dbrand.com/shop/skins/steam-controller-skins?srsltid=AfmBOoo401JYCYX9T34PNZeE3djuKT6dfJpe2pNaT4-cRkyfG0XMThnb" target="_blank">Dbrand have already unveiled 44 fresh skins</a> to liven up your Steam Controller. "<a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">The original Steam Controller</a> came out 11 years ago and was a bit of a cult classic," the company wrote as part of the announcement, "We've never met a cult we didn't want to be a part of, so we're getting in on the ground floor."</p><p>The new controller wraps definitely not all winners (the '<a href="https://dbrand.com/shop/skins/steam-controller-skins?design=rl-blk" target="_blank">Real Black Leather</a>' wrap seems a bit tacky in my humble opinion), but I like that each one includes a full coverage wrap alongside an 'accent' skin that only covers the lower portion of the controller. For instance, the <a href="https://dbrand.com/shop/skins/steam-controller-skins?design=damascus-acid&srsltid=AfmBOoo401JYCYX9T34PNZeE3djuKT6dfJpe2pNaT4-cRkyfG0XMThnb" target="_blank">Acid</a> and <a href="https://dbrand.com/shop/skins/steam-controller-skins?design=carnage&srsltid=AfmBOoo401JYCYX9T34PNZeE3djuKT6dfJpe2pNaT4-cRkyfG0XMThnb" target="_blank">Carnage</a> skins look a bit hectic as all-over wraps, but work well as a contained pop of colour around the touch pads.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>The more premium selection of leather wraps at the top end go for about $25, while the more straightforward, colour block designs like '<a href="https://dbrand.com/shop/skins/steam-controller-skins?design=pastel-prp" target="_blank">Kinda Purple</a>' go for $12. Setting aside the fact that 'purple' is more blue than I'd personally like, I at least appreciate the option to personalise what would otherwise be yet another samey-looking gamepad. Each skin is scratch-proof, too, and meant to be easy enough to remove should you have second thoughts. </p><p>Better yet, a removed skin shouldn't leave your brand new Steam controller covered in sticky adhesive residue. That's great because, not only am I chronically indecisive, but I'll need something to tide me over until Dbrand's <a href="https://www.pcgamer.com/hardware/pc-cases/dbrand-has-teased-a-render-of-a-portal-companion-cube-steam-machine-case-so-you-can-put-a-case-around-your-case/" target="_blank">Companion Cube-style housing</a> for the Steam Machine drops.</p><p><a href="https://www.pcgamer.com/hardware/valve-still-hopes-to-ship-steam-machines-in-2026-but-a-delay-into-2027-is-starting-to-look-like-a-real-possibility-memory-and-storage-shortages-have-created-challenges-for-us/" target="_blank">Valve itself has re-committed to a 2026 release window for the Steam Machine</a>, which was revealed alongside the new Steam controller previously. Bearing the squeeze of <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">the memory supply crisis</a> in mind, I'll believe it when I see that teeny tiny gaming machine in PC Gamer towers with my own two eyes.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller Australian price revealed ahead of May 5 release ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Following some compelling leaks it was confirmed overnight that Steam Controller will launch on May 5 in Australia. The price is AU$149, with free shipping direct from Valve's Australian warehouse.</p><p>It was already confirmed that the Steam Controller would release in Australia at the same time as the rest of the world. But it's worth reiterating, because Steam Machine and Steam Frame still haven't received release dates despite previously being tipped for an early 2026 release. The whole tech world is heaving due to the AI-induced component shortage, so nothing that was certain six months ago is certain now.</p><p>Still, as Dave James reported earlier today, Steam Controller stock should be reliably available. "We have built up a good supply of this," Valve engineer <a href="https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/">Steve Cardinali said</a>. "But it's based on what we anticipate supply to be. And supply could be much larger than we anticipate."</p><p>We published a load of Steam Controller material overnight. Jacob Ridley's <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/">Steam Controller review</a> is worth a look if you're considering a purchase, and we published a <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/">Steam Controller teardown</a> demonstrating all the inner parts and how to access them.</p><p>How does the Steam Controller price size up with other gamepad prices in Australia? It's AU$10 cheaper than the AU$159 RRP on <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">our favourite PC gamepad</a>, the GameSir G7 Pro (which is currently on sale on Amazon for <a href="https://www.amazon.com.au/dp/B0FD41XC3P">AU$135</a>). It's also pricer than the Xbox controller (AU$89 RRP) and the Sony DualSense (AU$119.95). </p><p>The Steam Controller has some pretty impressive features: the trackpads are a huge boon, but it also boasts TMR anti-drift analog sticks, four haptic motors, an advertised 35+ hours of battery life, and replaceable batteries. Based on Jacob's review it's a worthy piece of kit—especially if you're like me and <a href="https://www.pcgamer.com/hardware/game-pads/i-cant-live-without-the-steam-decks-trackpads-anymore-and-i-hope-the-steam-controller-forces-the-competition-to-adopt-them/">love trackpads</a>—but it'll really depend on how you use a gamepad. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-is-au-usd149-in-australia-and-launching-day-one-with-the-rest-of-the-world/</link>
                                                                            <description>
                            <![CDATA[ The trackpad-laden gamepad launches next week. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EsprmtoaZEREmySe2GQacZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 28 Apr 2026 00:06:25 +0000</pubDate>                                                                                                                                <updated>Tue, 28 Apr 2026 01:02:09 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Following some compelling leaks it was confirmed overnight that Steam Controller will launch on May 5 in Australia. The price is AU$149, with free shipping direct from Valve's Australian warehouse.</p><p>It was already confirmed that the Steam Controller would release in Australia at the same time as the rest of the world. But it's worth reiterating, because Steam Machine and Steam Frame still haven't received release dates despite previously being tipped for an early 2026 release. The whole tech world is heaving due to the AI-induced component shortage, so nothing that was certain six months ago is certain now.</p><p>Still, as Dave James reported earlier today, Steam Controller stock should be reliably available. "We have built up a good supply of this," Valve engineer <a href="https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/">Steve Cardinali said</a>. "But it's based on what we anticipate supply to be. And supply could be much larger than we anticipate."</p><p>We published a load of Steam Controller material overnight. Jacob Ridley's <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/">Steam Controller review</a> is worth a look if you're considering a purchase, and we published a <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/">Steam Controller teardown</a> demonstrating all the inner parts and how to access them.</p><p>How does the Steam Controller price size up with other gamepad prices in Australia? It's AU$10 cheaper than the AU$159 RRP on <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">our favourite PC gamepad</a>, the GameSir G7 Pro (which is currently on sale on Amazon for <a href="https://www.amazon.com.au/dp/B0FD41XC3P">AU$135</a>). It's also pricer than the Xbox controller (AU$89 RRP) and the Sony DualSense (AU$119.95). </p><p>The Steam Controller has some pretty impressive features: the trackpads are a huge boon, but it also boasts TMR anti-drift analog sticks, four haptic motors, an advertised 35+ hours of battery life, and replaceable batteries. Based on Jacob's review it's a worthy piece of kit—especially if you're like me and <a href="https://www.pcgamer.com/hardware/game-pads/i-cant-live-without-the-steam-decks-trackpads-anymore-and-i-hope-the-steam-controller-forces-the-competition-to-adopt-them/">love trackpads</a>—but it'll really depend on how you use a gamepad. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve on the $99 Steam Controller: 'I do know price has gone up from where we originally wanted it to be' ]]></title>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/valve-on-the-usd99-steam-controller-i-do-know-price-has-gone-up-from-where-we-originally-wanted-it-to-be/</link>
                                                                            <description>
                            <![CDATA[ Almost inevitably, Valve's new PC pad is pricier than we'd all hoped. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XhnPH2aeDNDMEiQA5i9BZa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 19:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/</link>
                                                                            <description>
                            <![CDATA[ "We'll have a good amount of stock around the world for the launch." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Rw7Gp4VNeFbKutcUJZbgEm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 18:00:00 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 14:09:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/valve-will-be-providing-steam-controller-replacement-parts-via-ifixit-after-launch/</link>
                                                                            <description>
                            <![CDATA[ Valve ensured the new pad has a focus on modding and repairability: "We know our community." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TCfYTfoQaAw6ouJ6ysnZFV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:20:00 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 14:13:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/valves-new-steam-controller-goes-on-sale-next-week/</link>
                                                                            <description>
                            <![CDATA[ Trackpad-tastic. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yvoS8xEi5dK52bgMpHqnE4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:01:00 +0000</pubDate>                                                                                                                                <updated>Mon, 27 Apr 2026 17:07:09 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The new <a href="www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a> is an impressive bit of equipment—and if you're itching to get your hands on one, there isn't too long left to wait. According to Valve, the dual-trackpad-equipped beastie will be available to stick in your cart on the Steam store from Monday, May 4.</p><p>Pricing varies by region, with the mega-pad coming in at $99 in the US, €99 in the EU, and £85 in the UK. Aussie buyers will pay AUD 149, whereas Polish Steam-enjoyers will pay PLN 419.</p><p>Valve says these pricing differences are down to distribution costs, import duties/tariffs, and marketing conditions, which is pretty much a summary of many of the challenges facing the entire tech industry right now.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SoNANE4mHlI" allowfullscreen></iframe></div></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>Still, the price tag is slightly less than I was expecting, especially when you take into account the uniqueness of Valve's design. The Steam Controller is a sizable beast with two large, haptic-enabled trackpads and twin TMR sticks, alongside a more traditional array of face buttons and triggers. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iNXRdG87TDa6k5oCLmffFY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>There are also four sizeable buttons on the rear of the grips, which makes it a very customisable controller. There aren't many gaming devices that can truly mimic a mouse, and it's even got gyro controls to play with, too.</p><p>Our Jacob likes his review sample very much, calling it a "comfy pad for comfy gamers." It's not particularly quick for competitive gaming due to a standard 250 Hz polling rate, but if you're the sort of person who likes to recline on a couch or game in bed, it's pretty ace.</p><p>And with a 35-hour battery life, you shouldn't have to top it up too often with the included charging puck, either. <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">The original Steam Controller was a bit of a disappointment</a>, but this one's got a design that really works—and there's only a short while to go before you can grab one for yourself.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller teardown: simple to open, easy to fix ]]></title>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/</link>
                                                                            <description>
                            <![CDATA[ The Steam Controller is straightforward to repair or mod at home. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WwDdwjyFLzp727AM7tRhX4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 27 Apr 2026 17:06:02 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've been using the new <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a> for a couple of weeks now and over that time I've taken it apart a total of three times. Each time, piece by piece, back to an empty shell. That might sound like a waste of time, but disassembling the Steam Controller only takes around 15 minutes once you know what you're doing.</p><p>Valve has designed the inside of the Steam Controller like it was waiting for someone to rip it open. Held together by easily accessible screws, it contains clearly labelled components that, for the most part, could be replaced or repaired at home.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>There are a couple parts that may require a little more know-how with a soldering iron, such as the TMR sticks. But Valve has told me it will be making spare parts officially available via iFixit, as it does today for the Steam Deck. That won't happen right away but sometime in the future. Once that happens, we're onto a winner for repairability.</p><p>Here's what you need to disassemble the Steam Controller:</p><ul><li><strong>Torx T6 screwdriver</strong></li><li><strong>Torx T5 screwdriver (only for trackpads/trackpad PCB)</strong></li></ul><p>Here's what's nice to have:</p><ul><li><strong>Pair of tweezers</strong></li><li><strong>Spudger</strong></li></ul><h2 class="article-body__section" id="section-steam-controller-teardown"><span>Steam Controller - Teardown</span></h2><p>During my first couple of days with the Steam Controller, I noticed one of the triggers was a little louder than the other. Only a barely noticeable metallic ping as the trigger reset, but enough for me to take a look inside and see if there was something up.</p><p>There are seven Torx screws between me and the inside of the Steam Controller. These require a Torx T6 bit. With those taken care of, the rear shell comes cleanly away.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2p3C3EMPD4pToBrKpzCkLY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QT2GEtrv8ZqU4brjdKWfLY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>First off, the squeaky trigger. The trigger mechanism is a simple spring attached beneath the trigger itself, which is sat on a metal bar running through a couple of plastic struts. It's a Hall effect trigger with corresponding sensors on each side of the mainboard. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pU9uWzWcjQ6DQapqAhoyPY" name="IMG_4084_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/pU9uWzWcjQ6DQapqAhoyPY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Looking to the squeaky left trigger, there's not much different to the right. The spring is perhaps at a slight angle compared to the other side, so I prod at it a little, and, voila! The squeak is gone. Simple as. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/o2FvAqZZLEtDuz3yqTFVSY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/keSow63W2FKbBYYRSgkhQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vKGZZHtUCKPczHczJatFQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Diving further in, the battery can be lifted out with just a finger from the right side. The contacts are on the left side but are only held in place by the housing. So, in the event of needing a replacement, this would require nothing more than a single Torx screwdriver and a replacement battery. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qvFjv26YeAzwhbC9fQq3QY" name="IMG_4094_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/qvFjv26YeAzwhbC9fQq3QY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The battery is a Li-Ion made by Getac Technology (Kunshan) Co., Ltd and rated to 2,178 mAh and 8.39 Wh.</p><p>Removing the battery housing requires unscrewing another four Torx T6 screws, of a shorter length than those holding the outer shell together. Before doing that, however, I remove the two cables that connect the haptic motors in the grips to the mainboard.</p><p>The now exposed mainboard has another three Torx T6 screws holding it in place. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3r9f8TVv9QrWNaFJyCTRUY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/g3S7q4FPEa7LLrDUPQCx4Y.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It also has a ribbon cable to the PCB for the trackpads, which needs to be removed. The mainboard has a Nordic Semiconductor SOC mounted in the middle, which appears to be a Nordic Semiconductor SoC with Bluetooth and 2.4 GHz (nRF52833).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="t7PRJHbkrzJ6gHjJcJxYVY" name="IMG_4117_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/t7PRJHbkrzJ6gHjJcJxYVY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Upon removing the mainboard, I could see that the TMR thumbsticks are soldered onto the other side of it. That means if a thumbstick were to break, you would need to replace the entire mainboard. Unless you felt comfortable with a soldering iron, of course, in which case it shouldn't be too bad to replace.</p><p>The soldered thumbsticks make a change from the Steam Deck, which had its mounted to individual PCBs and <a href="https://www.pcgamer.com/gulikit-electromagnetic-joystick-module-for-steam-deck-review/" target="_blank">made swapping to different thumbsticks</a> an easy job. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/MTfseZHwZ4G4SbngxZowKY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tAfY8FdwGocKSxx9WQtFPY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kFHu65PranUax5mhRdWxQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GZEuZat4Pz7pK5dAwn9ZTY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You can see from the mainboard that it was manufactured in either September or December. It does seem likely that it's using an international date format and therefore was manufactured in September, which would mean Valve has been piecing these together for a long time. Perhaps a positive sign for widespread availability at launch?</p><p>I was unsure where to go next at this point. There's still a board for the trackpads that needs removing, but I can't reach it until I've removed the haptic motors on either side. These appear to be held onto a singular plastic plate that connects both sides of the controller. </p><p>I can reach most of the screws holding the plastic frame in place, except for two hidden behind the triggers. For now, I am able to remove a large ribbon cable for the face buttons that rests in place on two small plastic clips at the centre of the controller.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ArVp8Cz4SxwEk9uVdWrSKY" name="IMG_4123_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/ArVp8Cz4SxwEk9uVdWrSKY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I then realise I only need to remove the metal bar that the triggers are attached to in order to remove them entirely. With those gone, I can finally see under the trigger and apply a drop of lube to the struts holding it in place. And get at the two remaining screws holding the plastic frame.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QQ9K7XMGvQeRu2PG4fSdUY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AWHptCudLcWNX73FbAd8GY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With the plastic frame gone, the haptic motors, shoulder buttons, and face button membrane all go with it. It's now possible to remove or replace the buttons and rubber gaskets they rest on. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nekoyTWRfFxJErFmJKQ3TY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aKa56cYmSHJqkz462QJHKY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8WRfXCqnRBZQKWyE9dkHVY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YPxWMrrF5aWqrTkStVD6WY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The trackpad PCB has a few more ribbon cables that need to be unhooked and removed, so away those go. Then I can remove four more screws to pull away the PCB itself. This is the first time I need to change my driver bit, switching to a Torx T5. </p><p>The screws used here are slightly shorter, so better not mix them up.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/poTuvBKLfU4qnDysqQCWAY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mokuyf3orAEhdTpQzgBxRY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>There's not much to this trackpad board, beyond a Cirque ASIC for controlling the two modules that rest underneath it.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZhBXDXn77bD7o3ADLjiNQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wwArj4hhvKUiPU89AjawNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zyQqVidq5mracnW7HGqrMY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With that removed, it's onto the final piece of the puzzle: the trackpad modules themselves. With these removed through four screws on each side, the entire controller is in pieces on my desk.</p><h2 class="article-body__section" id="section-verdict"><span>Verdict</span></h2><p>I'm impressed. Valve has shown it cares about repairability in the past and that holds true for the Steam Controller.</p><p>Admittedly, I first opened it up to try to solve an issue that shouldn't have been there in the first place—the squeaky trigger—but not only was that resolved easily, the repairability of the Steam Controller was laid bare while doing so.</p><p>Many parts of the Steam Controller should be an easy replacement with minimal fuss, especially once spare parts are available to purchase.</p><p>It's only the thumbsticks that are more likely to require a full repair job, on account of being soldered to the mainboard itself. That's not unusual for a controller and not impossible to do with a soldering iron at home. Though being tunnel magnetoresistance (TMR) sticks, I'm hoping for a long shelf life and minimal stick drift as these are some of the intended benefits over potentiometer.</p><p>For now, it's time to put it back together. Make sure to tighten everything down when you're rebuilding, especially the trackpads, as you may end up with a rattle if you don't—don't ask me how I know that.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SoNANE4mHlI" allowfullscreen></iframe></div></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller (2026) review ]]></title>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/</link>
                                                                            <description>
                            <![CDATA[ Second time's the charm. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">B4p3aPJNV2Ckc47kSywXKQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 29 Apr 2026 11:16:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Steam Controller is the first of three new bits of hardware from Valve this year. It's designed to let you take control of your PC from the comfort of your couch and without a mouse, which is sure to appeal to a certain type of gamer.<br><br>The second-generation Steam Controller includes everything one might expect from a gamepad, including two thumbsticks and the usual array of buttons. But it also offers input parity with the <a href="https://www.pcgamer.com/steam-deck-oled-review/" target="_blank">Steam Deck</a>, Valve's popular handheld gaming PC, and in doing so, delivers a few extra tricks. Beneath its symmetrical sticks are two trackpads, which you can use to glide around the desktop or look around in-game. It also includes a 6-axis gyro, which is shockingly an even better way to mimic a mouse. I'm a gyro control convert.<br><br>The Steam Controller does have to be quite convincing to justify its price tag, however. It costs $99/€99/£85/$149 AUD, which puts it a league above budget pads with similar specs and fewer inputs. You're paying for convenience here. To use your PC with ease while lounging or lazing.<br><br>If you prefer to game bolt upright and laser-focused on your kill/death ratio, you'll want to look elsewhere. This isn't a competitive pad. It's a comfy pad for comfy gamers—and if that sounds like you, read on.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You're building or buying a living room PC: </strong>The Steam Controller's trackpads and gyro controls are useful for navigating menus, websites, or the desktop from a distance.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don't buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You main another game launcher: </strong>The Steam Controller, true to its name, requires Steam to function and may require more set-up for non-Steam games.</p></div></div></div></div><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460343030-gfokqvjk7 *, #fv-chart-1777460343030-gfokqvjk7 *:before, #fv-chart-1777460343030-gfokqvjk7 *:after, #fv-chart-1777460343030-gfokqvjk7-slideshow *, #fv-chart-1777460343030-gfokqvjk7-slideshow *:before, #fv-chart-1777460343030-gfokqvjk7-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460343030-gfokqvjk7, #fv-chart-1777460343030-gfokqvjk7-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460343030-gfokqvjk7 {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460343030-gfokqvjk7-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460343030-gfokqvjk7 .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460343030-gfokqvjk7 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460343030-gfokqvjk7 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460343030-gfokqvjk7 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-expand-btn,    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-expand-btn:hover,    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460343030-gfokqvjk7 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460343030-gfokqvjk7 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-row, #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460343030-gfokqvjk7 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460343030-gfokqvjk7 .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-pie-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-row,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-stacked-product,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-row,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-stacked-product,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-label,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-product-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-label,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-container,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-cluster,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-benchmark-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-dropdown-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-chart-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-chart-subhead,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-header,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-vs,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460343030-gfokqvjk7.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460343030-gfokqvjk7 .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-row,        #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-product,        #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-label,        #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-container,        #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460343030-gfokqvjk7 .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460343030-gfokqvjk7.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Overall Chart Title",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T10:59:03.031Z",  "citation": "We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses.",  "keywords": [    "Steam Controller (2026)",    "Ergonomics",    "Performance",    "Internals",    "Aesthetics",    "Software",    "Battery",    "Value",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Ergonomics",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Performance",      "value": 3,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Internals",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Aesthetics",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Software",      "value": 3.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Battery",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460343030-gfokqvjk7" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper fv-no-header  ">                                                <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460343030-gfokqvjk7-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses." data-bar-xaxis-tick-increment="1" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Ergonomics: 4 ">                    <div class="fv-bar-label">Ergonomics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Performance: 3 ">                    <div class="fv-bar-label">Performance</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Internals: 4.5 ">                    <div class="fv-bar-label">Internals</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 90%; background-color: #E33235;" data-target-width="90">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4.5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Aesthetics: 4 ">                    <div class="fv-bar-label">Aesthetics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Software: 3.5 ">                    <div class="fv-bar-label">Software</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 70%; background-color: #E33235;" data-target-width="70">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3.5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Battery: 5 ">                    <div class="fv-bar-label">Battery</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 100%; background-color: #E33235;" data-target-width="100">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Value: 3 ">                    <div class="fv-bar-label">Value</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Ergonomics ()</th><th>Performance ()</th><th>Internals ()</th><th>Aesthetics ()</th><th>Software ()</th><th>Battery ()</th><th>Value ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4</td><td>3</td><td>4.5</td><td>4</td><td>3.5</td><td>5</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: block;">                <div class="rv-chart-caption">We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses.</div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460343030-gfokqvjk7', false); });      } else {        initialize('fv-chart-1777460343030-gfokqvjk7', false);      }    })();      </script></div><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SoNANE4mHlI" allowfullscreen></iframe></div></div><h2 class="article-body__section" id="section-steam-controller-features"><span>Steam Controller - Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Symmetrical</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>TMR (Tunnel magnetoresistance) with capacitive touch</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>A, B, X, Y, View, Menu, Steam, QAM (Quick Access Menu)</p></td></tr><tr><td class="firstcol " ><p><strong>Rear buttons</strong></p></td><td  ><p>4x on grip (R4, R5, L4, L5)</p></td></tr><tr><td class="firstcol " ><p><strong>Trackpads</strong></p></td><td  ><p>2x 34.5 mm square</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>4x haptic motors (2x trackpads, 2x grips)</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong></p></td><td  ><p>6-axis IMU (enabled via capacitive touch in L/R grips with Grip Sense)</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz (via included Puck), Bluetooth (minimum 4.2, 5.0 or higher recommended), USB Type-C to Type-A</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>35+ hours (charged via USB-C or Puck), 8.39 Wh Li-ion</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>4 ms (250 Hz)</p></td></tr><tr><td class="firstcol " ><p><strong>Input latency</strong></p></td><td  ><p>~8 ms end-to-end</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>292 grams (259 grams as measured)</p></td></tr><tr><td class="firstcol " ><p><strong>Shortcuts</strong></p></td><td  ><p>Steam+Y (turn off), R1+A+Steam (hold Steam (pairing in current )</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$99/€99/£85/$149 AUD</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-steam-controller-ergonomics"><span>Steam Controller - Ergonomics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="U2L63LGauar8GHYxqyyhNY" name="IMG_4226_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Good news, despite its larger size, the Steam Controller rests comfortably in my hands. In the name of science, I also asked my partner with smaller hands whether she found it to be easy to reach the thumbsticks, which are set close to the middle of the controller, and she had no problems whatsoever. Same goes for the trackpads, which she and I can both reach just fine.</p><p>You have to move your palm ever so slightly away from the controller to shift between the thumbsticks and trackpads, and because you might use the left thumbstick and right trackpad at the same time, you might find your right hand is moving around a lot more than your left. Though it's all fairly accessible with minimal movement. The trackpads are recessed just a touch to make using them feel a little more natural.</p><p>One of the Steam Controller's better features are the rear grip buttons. These are placed very low down on the inside of both grips, landing right beneath my fingers. As someone that tends to ignore rear paddles on controllers, these feel genuinely useful and with a satisfying click. Though, the lower set, R5 and L5, are fairly easy to press by accident.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777458159149-5ellnb36v *, #fv-chart-1777458159149-5ellnb36v *:before, #fv-chart-1777458159149-5ellnb36v *:after, #fv-chart-1777458159149-5ellnb36v-slideshow *, #fv-chart-1777458159149-5ellnb36v-slideshow *:before, #fv-chart-1777458159149-5ellnb36v-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777458159149-5ellnb36v, #fv-chart-1777458159149-5ellnb36v-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777458159149-5ellnb36v {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777458159149-5ellnb36v .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777458159149-5ellnb36v-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777458159149-5ellnb36v .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777458159149-5ellnb36v .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777458159149-5ellnb36v .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777458159149-5ellnb36v .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777458159149-5ellnb36v .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777458159149-5ellnb36v .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777458159149-5ellnb36v .fv-image-compare-expand-btn,    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-expand-btn:hover,    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777458159149-5ellnb36v .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777458159149-5ellnb36v .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777458159149-5ellnb36v .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777458159149-5ellnb36v .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777458159149-5ellnb36v .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-bar-row, #fv-chart-1777458159149-5ellnb36v .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777458159149-5ellnb36v .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777458159149-5ellnb36v .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777458159149-5ellnb36v .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777458159149-5ellnb36v .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777458159149-5ellnb36v .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777458159149-5ellnb36v .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777458159149-5ellnb36v .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777458159149-5ellnb36v .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777458159149-5ellnb36v .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-pie-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-row,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-stacked-product,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-bar-product,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-row,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-stacked-product,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-label,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-product-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-label,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-container,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-cluster,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-label-space,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-benchmark-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-dropdown-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-chart-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-chart-subhead,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-header,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-vs,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777458159149-5ellnb36v.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777458159149-5ellnb36v .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-row,        #fv-chart-1777458159149-5ellnb36v .fv-stacked-product,        #fv-chart-1777458159149-5ellnb36v .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-label,        #fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-container,        #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777458159149-5ellnb36v .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777458159149-5ellnb36v.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "It's a lot comfier than it looks, that's all I'll say",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T10:22:39.150Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Ergonomics",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Score – Ergonomics",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777458159149-5ellnb36v" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">It's a lot comfier than it looks, that's all I'll say</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777458159149-5ellnb36v-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Score - Ergonomics: 4 ">                    <div class="fv-bar-label">Ergonomics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Ergonomics ()</th></tr></thead>            <tbody><tr><td>Score</td><td>4</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777458159149-5ellnb36v', false); });      } else {        initialize('fv-chart-1777458159149-5ellnb36v', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-performance"><span>Steam Controller - Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KCHBXz96tngYsTs9sZLZHY" name="IMG_4253_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Steam Controller feels agile enough in most games. Though you can tell it's destined for the couch and not contests.</p><p>The face buttons are all run-of-the-mill membrane. They feel consistent, if nothing else. The same can be said of the D-pad, which is stiff but feels stable for it, and the triggers, which use Hall effect sensors, but are nothing special. Though helped along by decent haptics in the grips and trackpads, if you're after tactile feedback for competitive play, I'd look elsewhere. The Steam Controller isn't going to deliver much of that. That's also reflected in its 250 Hz polling rate—many pads today will bump that up to 1,000 Hz.</p><p>Instead, the Steam Controller has more to offer the horizontal, or at least lazily reclined, gamer. </p><p>The Steam Deck has already proven how effective trackpads can be for imitating the movement of a mouse. I reckon they're around 70% of the way there, something like that. I won't pretend like that final 30% doesn't matter a <em>whole</em> lot, but in some strategy or RPG games, or when browsing your desktop or the interwebs, 70% is all you need. The Steam Controller works well for those.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zZwRjNRUQ65aXkcjWiVtEY" name="IMG_4257_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I can also see why that <a href="https://www.pcgamer.com/hardware/controllers/how-gyro-support-was-added-into-the-new-steam-controller-is-a-typical-valve-story/" target="_blank">one engineer at Valve loves gyro controls</a>. I'm starting to finally get it with the Steam Controller. I find I have a higher accuracy across the desktop with gyro controls compared to the trackpads and it's a big improvement over attempting to use a keyboard and mouse while lying down. Don't even get me started on those weird couch tables (though Hope did <a href="https://www.pcgamer.com/hardware/gaming-chairs/couchmaster-cycon3-review/" target="_blank">enjoy her time with one</a>).</p><p>Moreover, the trackpads work great in tandem with the gyro controls. The gyro is by default only enabled when you are touch the trackpad or thumbstick, meaning you're naturally placed to blend a few input methods. You can whip across the screen with the gyro then switch seamlessly to the trackpad for more controlled movements. Then back over to the other trackpad to scroll through the Steam Sale.</p><p>While my experience in some games saw me reaching for the thumbsticks again, anything accepting of standard mouse movement feels the benefit of dual-wielding these two unusual inputs. For the intended audience here, they make a lot of sense and they feel very snappy.</p><p>Nevertheless, you'll be relying on the thumbsticks for a good deal of your gaming with the Steam Controller. These are a highlight of the Steam Controller for me. Firstly, it's because it <em>has </em>thumbsticks. Two of them. Unlike the last one. Secondly, because they're a good height, responsive, and easy to configure in Steam. Thirdly, I don't have to replace them with Hall effect like I did the Steam Deck, as they're already TMR.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460447728-wxfqp06hf *, #fv-chart-1777460447728-wxfqp06hf *:before, #fv-chart-1777460447728-wxfqp06hf *:after, #fv-chart-1777460447728-wxfqp06hf-slideshow *, #fv-chart-1777460447728-wxfqp06hf-slideshow *:before, #fv-chart-1777460447728-wxfqp06hf-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460447728-wxfqp06hf, #fv-chart-1777460447728-wxfqp06hf-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460447728-wxfqp06hf {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460447728-wxfqp06hf .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460447728-wxfqp06hf-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460447728-wxfqp06hf .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460447728-wxfqp06hf .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460447728-wxfqp06hf .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460447728-wxfqp06hf .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460447728-wxfqp06hf .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-expand-btn,    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-expand-btn:hover,    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460447728-wxfqp06hf .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460447728-wxfqp06hf .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460447728-wxfqp06hf .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460447728-wxfqp06hf .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-row, #fv-chart-1777460447728-wxfqp06hf .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460447728-wxfqp06hf .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460447728-wxfqp06hf .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460447728-wxfqp06hf .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460447728-wxfqp06hf .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460447728-wxfqp06hf .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-pie-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-row,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-stacked-product,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-row,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-stacked-product,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-label,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-product-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-label,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-container,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-cluster,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-benchmark-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-dropdown-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-chart-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-chart-subhead,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-header,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-vs,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460447728-wxfqp06hf.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460447728-wxfqp06hf .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-row,        #fv-chart-1777460447728-wxfqp06hf .fv-stacked-product,        #fv-chart-1777460447728-wxfqp06hf .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-label,        #fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-container,        #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460447728-wxfqp06hf .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460447728-wxfqp06hf.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Performance isn't the name of the game here. Convenience is more what Valve's going for",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:00:47.729Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Performance",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Performance",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460447728-wxfqp06hf" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Performance isn't the name of the game here. Convenience is more what Valve's going for</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460447728-wxfqp06hf-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Performance: 3 ">                    <div class="fv-bar-label">Performance</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Performance ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460447728-wxfqp06hf', false); });      } else {        initialize('fv-chart-1777460447728-wxfqp06hf', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-internals"><span>Steam Controller - Internals</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>You can dismantle the Steam Controller with relative ease and using only a handful of tools: a pair of driver bits (Torx 6 and Torx 5), a spudger, and a pair of tweezers. I've carried out a full <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix" target="_blank">Steam Controller teardown</a> as you can see above, and it only takes just 15 minutes to get from built to bits.</p><p>Valve tells me that it is planning to offer official spare parts via iFixit, as it currently does for the Steam Deck. This won't be available at launch but sometime after. That means any future repairs should be very straightforward, though I suspect it will also entice modders to take things further. </p><p>If anyone designs a translucent Steam Controller shell, you have a customer right here.</p><p>Though we did experience minor issues with the two samples we received for review. One had a faint squeak when the trigger was reset, which I fixed by prodding the spring, and the other a slightly misaligned shell that gave it a bit of a rough-feeling edge.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460546872-uvtew7plg *, #fv-chart-1777460546872-uvtew7plg *:before, #fv-chart-1777460546872-uvtew7plg *:after, #fv-chart-1777460546872-uvtew7plg-slideshow *, #fv-chart-1777460546872-uvtew7plg-slideshow *:before, #fv-chart-1777460546872-uvtew7plg-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460546872-uvtew7plg, #fv-chart-1777460546872-uvtew7plg-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460546872-uvtew7plg {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460546872-uvtew7plg .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460546872-uvtew7plg-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460546872-uvtew7plg .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460546872-uvtew7plg .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460546872-uvtew7plg .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460546872-uvtew7plg .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460546872-uvtew7plg .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460546872-uvtew7plg .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460546872-uvtew7plg .fv-image-compare-expand-btn,    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-expand-btn:hover,    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460546872-uvtew7plg .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460546872-uvtew7plg .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460546872-uvtew7plg .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460546872-uvtew7plg .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460546872-uvtew7plg .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-bar-row, #fv-chart-1777460546872-uvtew7plg .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460546872-uvtew7plg .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460546872-uvtew7plg .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460546872-uvtew7plg .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460546872-uvtew7plg .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460546872-uvtew7plg .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460546872-uvtew7plg .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460546872-uvtew7plg .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460546872-uvtew7plg .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460546872-uvtew7plg .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-pie-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-row,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-stacked-product,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-row,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-stacked-product,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-label,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-product-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-label,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-container,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-cluster,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-benchmark-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-dropdown-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-chart-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-chart-subhead,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-header,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-vs,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460546872-uvtew7plg.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460546872-uvtew7plg .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-row,        #fv-chart-1777460546872-uvtew7plg .fv-stacked-product,        #fv-chart-1777460546872-uvtew7plg .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-label,        #fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-container,        #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460546872-uvtew7plg .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460546872-uvtew7plg.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Valve has designed the inside of the Steam Controller like it was just waiting for someone to rip it open",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:02:26.872Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Internals",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Internals",      "value": 4.5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460546872-uvtew7plg" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Valve has designed the inside of the Steam Controller like it was just waiting for someone to rip it open</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460546872-uvtew7plg-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Internals: 4.5 ">                    <div class="fv-bar-label">Internals</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 90%; background-color: #E33235;" data-target-width="90">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4.5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Internals ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4.5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460546872-uvtew7plg', false); });      } else {        initialize('fv-chart-1777460546872-uvtew7plg', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-aesthetics"><span>Steam Controller - Aesthetics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1919px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="pNnhNDkM4iHpeDF9siHpSY" name="IMG_4263_modified" alt="The Steam Controller on a desk next to its charging dock and a keyboard." src="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY.jpg" mos="" align="middle" fullscreen="" width="1919" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With input parity to the Steam Deck, it makes sense that the Steam Controller also has looks to match. But beyond the obvious similarities, there are some slight differences. </p><p>The Steam Controller has a more textured finish compared to the Steam Deck. It's also a lighter shade of grey, which is noticeable in direct sunlight. The face buttons and D-pad are also larger on the controller, and the slightly recessed trackpads are also tilted for a more natural hand position. The Steam and QAM buttons are also raised, and the shoulder buttons have a little more travel to them.</p><p>It looks more sculpted than some early Reddit mockups of what Valve might do, but not a million miles off what was expected either. Importantly, it looks and feels a lot better than the first-generation Steam Controller. The modern version still has that quality of affordability about it—you'll find much more polished controllers on the market—but it feels solid. The Puck also helps keep your desk or TV unit tidy while keeping the receiver close to the Controller.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460863926-hterln9hn *, #fv-chart-1777460863926-hterln9hn *:before, #fv-chart-1777460863926-hterln9hn *:after, #fv-chart-1777460863926-hterln9hn-slideshow *, #fv-chart-1777460863926-hterln9hn-slideshow *:before, #fv-chart-1777460863926-hterln9hn-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460863926-hterln9hn, #fv-chart-1777460863926-hterln9hn-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460863926-hterln9hn {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460863926-hterln9hn .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460863926-hterln9hn .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460863926-hterln9hn .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460863926-hterln9hn-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460863926-hterln9hn .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460863926-hterln9hn .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460863926-hterln9hn .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460863926-hterln9hn .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460863926-hterln9hn .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460863926-hterln9hn .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460863926-hterln9hn .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460863926-hterln9hn .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460863926-hterln9hn .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460863926-hterln9hn .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460863926-hterln9hn .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460863926-hterln9hn .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460863926-hterln9hn .fv-image-compare-expand-btn,    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-expand-btn:hover,    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460863926-hterln9hn .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460863926-hterln9hn .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460863926-hterln9hn .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460863926-hterln9hn .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460863926-hterln9hn .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460863926-hterln9hn .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460863926-hterln9hn .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460863926-hterln9hn .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460863926-hterln9hn .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460863926-hterln9hn .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460863926-hterln9hn .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460863926-hterln9hn .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460863926-hterln9hn .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460863926-hterln9hn .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460863926-hterln9hn .fv-bar-row, #fv-chart-1777460863926-hterln9hn .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460863926-hterln9hn .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460863926-hterln9hn .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460863926-hterln9hn .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460863926-hterln9hn .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460863926-hterln9hn .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460863926-hterln9hn .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460863926-hterln9hn .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460863926-hterln9hn .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460863926-hterln9hn .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460863926-hterln9hn .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-pie-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-row,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-stacked-product,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-row,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-stacked-product,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-label,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-product-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-label,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-container,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-cluster,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-benchmark-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-dropdown-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-chart-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-chart-subhead,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-header,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-vs,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460863926-hterln9hn.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460863926-hterln9hn.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460863926-hterln9hn .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-row,        #fv-chart-1777460863926-hterln9hn .fv-stacked-product,        #fv-chart-1777460863926-hterln9hn .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-label,        #fv-chart-1777460863926-hterln9hn .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-container,        #fv-chart-1777460863926-hterln9hn .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460863926-hterln9hn .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460863926-hterln9hn .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460863926-hterln9hn .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460863926-hterln9hn .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460863926-hterln9hn .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460863926-hterln9hn.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "A big step-up in quality over what came before and a match for Valve's upcoming hardware",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:07:43.926Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Aesthetics",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Aesthetics",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460863926-hterln9hn" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">A big step-up in quality over what came before and a match for Valve's upcoming hardware</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460863926-hterln9hn-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Aesthetics: 4 ">                    <div class="fv-bar-label">Aesthetics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Aesthetics ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460863926-hterln9hn', false); });      } else {        initialize('fv-chart-1777460863926-hterln9hn', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-software"><span>Steam Controller - Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e2sgfYGNVJY685okvFvfCX" name="update-page" alt="The Steam Controller getting an update in Steam." src="https://cdn.mos.cms.futurecdn.net/e2sgfYGNVJY685okvFvfCX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>The Steam Controller, unsurprisingly, relies on Steam for all its software needs.</p><p>You'll find all the settings in the Controller tab of the Settings menu. There's a Pair and Manage tab, which shows the pairing status of the included Puck. It can be connected to up to four Steam Controllers at once, though there's one included in every box. You'll also see two further wireless pairing slots at the bottom. These are for the controller itself, as you could connect a single controller to multiple PCs or a PC and a Steam Machine.</p><p>There's also another Bluetooth pairing slot that's not displayed, though this is the best way to connect the controller to a Steam Deck without a cable. </p><p>Here how you access Bluetooth and a few other useful shortcuts:</p><ul><li><strong>Power on into Bluetooth pairing slot:</strong> B + R1/L1 + Steam button</li><li><strong>Power on into wireless pairing slot 1:</strong> Hold A + R1 + Steam button</li><li><strong>Power on into wireless pairing slot 2:</strong> Hold A + L1 + Steam button</li><li><strong>Power off:</strong> Steam button + Y</li><li><strong>Open Steam: </strong>Steam button</li><li><strong>Big Picture Mode (while in Steam): </strong>Steam button</li><li><strong>Show keyboard:</strong> X (in desktop layout)</li></ul><p>While a controller is connected, a new 'Steam Controller' tab populates with extra settings to mess with. In this tab, you can rename the controller, identify it (which causes it to rumble and ring out like an old Nokia), adjust button layouts, or test the controller inputs.</p><p>To take advantage of the trackpads for desktop browsing or gyro controls, you need to set these up in the Pair and Manage tab. Click to edit the desktop layout and you're able to select different behaviours for the gyro and right trackpad, as well as adjust button mapping and sensitivity. There's actually a whole lot of customisation possible through this screen. If that's not enough, by clicking on the cogwheels to the right of either gyro or trackpad options, there are further fine-tuning options. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/sv6VjC3drjobjGVhSwWHSX.jpg" alt="The Steam Controller settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wjFL3os6vxUY8zn8tD3tKX.jpg" alt="The Steam Controller gyro settings and calibration in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure></figure><p>For example, you can adjust the gyro controls to only function when you're holding a specific button. By default, this is set to utilise the capacitive touch sensing in the right thumbstick and right trackpad. Gyro will also only be enabled when you're holding the controller via Grip Sense. Though, if you're a leftie, you might want to switch this over to left thumbstick and left trackpad, or set it to only when you press certain inputs. It's up to you.</p><p>There's nothing that requires changing out of the box. Some settings for the gyro, at least, will be handy when setting it up for use in a certain game. Though you can access custom layouts for that, both your own configurations or those of the community. Since this has input parity with the Steam Deck, you can use any made for the Deck, too. I've tried a few, and they often work well, if only with a couple tweaks.</p><p>The Controller requires Steam or the Steam Link app. I tested it on GeForce Now via my iPhone and while it did connect over Bluetooth, it was not recognised in-game. It did, however, work seamlessly over a local connection using Steam Link.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6y4SF5ozG7z9fwRUQ3TSQX.jpg" alt="The Steam Controller pairing settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dkAcgb3sP5bcwWrqsxpqQX.jpg" alt="The Steam Controller settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure></figure><p>We also had some teething issues with Ubuntu and Pop! OS, which may be on our end as much as Valve's, but there could be futher tweaks required to get up-and-running off SteamOS and Windows.</p><p>One thing you might run into with the Steam Controller is attempting to use it while playing a non-Steam game. There are few options here. You can add a game to Steam and simply run it within the client, which should let you set game-specific controller configurations. Or you can use a desktop profile that just broadly applies to your entire system. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5Tqj5jkATxptKGNCEtF6WX" name="community-layout" alt="A community layout for Peak in the loading screen." src="https://cdn.mos.cms.futurecdn.net/5Tqj5jkATxptKGNCEtF6WX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>I found the former approach didn't work with Kingdom Come Deliverance II, which I have on Epic and must be booted via the Epic Games Launcher. That's a fairly common issue with some launchers. I tried a few different methods to get around this, such as creating a shortcut in the Epic launcher and adding that to Steam with a launch parameter, but Controller support was funky at best. Instead, I found it easier to just make a new desktop layout tailored to Kingdom Come Deliverance II and selecting that via Steam's settings page. You could do the same for any game. Though some games don't support reconfiguring the back buttons— KCD2 is one of them—gyro controls worked without issue in every game I tried.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777461085020-astu60izb *, #fv-chart-1777461085020-astu60izb *:before, #fv-chart-1777461085020-astu60izb *:after, #fv-chart-1777461085020-astu60izb-slideshow *, #fv-chart-1777461085020-astu60izb-slideshow *:before, #fv-chart-1777461085020-astu60izb-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461085020-astu60izb, #fv-chart-1777461085020-astu60izb-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461085020-astu60izb {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461085020-astu60izb .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777461085020-astu60izb .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461085020-astu60izb.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777461085020-astu60izb .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777461085020-astu60izb-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461085020-astu60izb-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461085020-astu60izb-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461085020-astu60izb .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777461085020-astu60izb .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777461085020-astu60izb .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777461085020-astu60izb .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461085020-astu60izb .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777461085020-astu60izb .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777461085020-astu60izb .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777461085020-astu60izb .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461085020-astu60izb .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461085020-astu60izb .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777461085020-astu60izb .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777461085020-astu60izb .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461085020-astu60izb .fv-image-compare-expand-btn,    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-expand-btn:hover,    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461085020-astu60izb .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461085020-astu60izb .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461085020-astu60izb .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777461085020-astu60izb .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461085020-astu60izb .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777461085020-astu60izb .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777461085020-astu60izb .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777461085020-astu60izb .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461085020-astu60izb .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461085020-astu60izb .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777461085020-astu60izb .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461085020-astu60izb .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461085020-astu60izb .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777461085020-astu60izb .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777461085020-astu60izb .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461085020-astu60izb .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461085020-astu60izb .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777461085020-astu60izb .fv-bar-row, #fv-chart-1777461085020-astu60izb .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777461085020-astu60izb .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461085020-astu60izb .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461085020-astu60izb .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461085020-astu60izb .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777461085020-astu60izb .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461085020-astu60izb .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461085020-astu60izb .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461085020-astu60izb .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461085020-astu60izb .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461085020-astu60izb .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461085020-astu60izb .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777461085020-astu60izb .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461085020-astu60izb .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461085020-astu60izb.mobile-view .fv-pie-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-row,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-stacked-product,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-row,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-stacked-product,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-label,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-product-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-label,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-container,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-cluster,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-benchmark-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-dropdown-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-chart-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-chart-subhead,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-header,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-vs,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461085020-astu60izb.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461085020-astu60izb.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461085020-astu60izb .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461085020-astu60izb .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-row,        #fv-chart-1777461085020-astu60izb .fv-stacked-product,        #fv-chart-1777461085020-astu60izb .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-label,        #fv-chart-1777461085020-astu60izb .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-container,        #fv-chart-1777461085020-astu60izb .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461085020-astu60izb .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461085020-astu60izb .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461085020-astu60izb .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461085020-astu60izb .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461085020-astu60izb .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461085020-astu60izb.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "There are lots of ways to configure the Steam Controller but, as the name suggests, it works best through Steam",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:11:25.021Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Software",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Software",      "value": 3.5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461085020-astu60izb" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">There are lots of ways to configure the Steam Controller but, as the name suggests, it works best through Steam</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461085020-astu60izb-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Software: 3.5 ">                    <div class="fv-bar-label">Software</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 70%; background-color: #E33235;" data-target-width="70">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3.5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Software ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3.5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777461085020-astu60izb', false); });      } else {        initialize('fv-chart-1777461085020-astu60izb', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-battery"><span>Steam Controller - Battery</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y.jpg" alt="The Steam Controller on a desk with the Puck in the foreground" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gokZLz3s9yr77LP6yPRX4Y.jpg" alt="The Steam Controller on a desk with the Puck in the foreground" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I'm yet to reach the end of a full charge with the Steam Controller. Valve has the battery life at 35 hours or more, and over the past few days, I've been using it as much as I can across any game I'm playing. I'm even putting my exfils in jeopardy in Marathon by ditching a mouse and keyboard (sorry, console players, but a controller is simply not cutting it). So far, so good. Though it's tough to say how much battery I have burned through exactly, as you can only roughly estimate from the Quick Access Menu icon.</p><p>Though in my tests, I ran it for eight hours and checked back on that Quick Access menu battery indicator, and lo and behold, it's still fully green. So a good indication of battery life to come.</p><p>Many users may not see the end of a full charge, well, ever. The Puck doubles up as a charging accessory and magnetically attaches to the rear of the controller when you place it down over it. If you set that up somewhere convenient besides your monitor or on a TV stand and make sure to return the controller to it once you're done playing, it'll always be ready to go.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777461184550-4tuucthjw *, #fv-chart-1777461184550-4tuucthjw *:before, #fv-chart-1777461184550-4tuucthjw *:after, #fv-chart-1777461184550-4tuucthjw-slideshow *, #fv-chart-1777461184550-4tuucthjw-slideshow *:before, #fv-chart-1777461184550-4tuucthjw-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461184550-4tuucthjw, #fv-chart-1777461184550-4tuucthjw-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461184550-4tuucthjw {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461184550-4tuucthjw .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777461184550-4tuucthjw-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461184550-4tuucthjw .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777461184550-4tuucthjw .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777461184550-4tuucthjw .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777461184550-4tuucthjw .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777461184550-4tuucthjw .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777461184550-4tuucthjw .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461184550-4tuucthjw .fv-image-compare-expand-btn,    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-expand-btn:hover,    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461184550-4tuucthjw .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461184550-4tuucthjw .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461184550-4tuucthjw .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461184550-4tuucthjw .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461184550-4tuucthjw .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-bar-row, #fv-chart-1777461184550-4tuucthjw .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777461184550-4tuucthjw .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461184550-4tuucthjw .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461184550-4tuucthjw .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461184550-4tuucthjw .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461184550-4tuucthjw .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461184550-4tuucthjw .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461184550-4tuucthjw .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777461184550-4tuucthjw .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461184550-4tuucthjw .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-pie-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-row,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-stacked-product,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-row,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-stacked-product,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-label,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-product-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-label,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-container,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-cluster,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-benchmark-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-dropdown-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-chart-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-chart-subhead,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-header,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-vs,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461184550-4tuucthjw.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461184550-4tuucthjw .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-row,        #fv-chart-1777461184550-4tuucthjw .fv-stacked-product,        #fv-chart-1777461184550-4tuucthjw .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-label,        #fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-container,        #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461184550-4tuucthjw .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461184550-4tuucthjw.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "A 35-hour battery life is solid but thanks to the charging Puck you don't have to think about it",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:13:04.551Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Battery",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Battery",      "value": 5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461184550-4tuucthjw" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">A 35-hour battery life is solid but thanks to the charging Puck you don't have to think about it</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461184550-4tuucthjw-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Battery: 5 ">                    <div class="fv-bar-label">Battery</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 100%; background-color: #E33235;" data-target-width="100">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Battery ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777461184550-4tuucthjw', false); });      } else {        initialize('fv-chart-1777461184550-4tuucthjw', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-value"><span>Steam Controller - Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rJZF2ynFyLsqQj769NLLTY" name="IMG_4232_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Steam Controller costs $99 (€99/£85/$149 AUD). </p><p>I didn't know what the price was going to be during my initial testing, and when I was sent it after a few days, I was slightly taken aback. Perhaps it's because the first-generation Steam Controller was sold at a miserly $5 at the end of its life, and the Steam Deck makes most other handhelds look overpriced, but it felt higher than I expected. Yet I've been poking around the controller market and I've come to a different conclusion.</p><p>On one end of the market, pads such as the <a href="https://www.pcgamer.com/hardware/controllers/scuf-envision-pro-review/" target="_blank">Scuf Envision Pro ($160)</a>, <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro ($150)</a>, <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K ($200)</a>, <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Razer Raiju V3 Pro ($220)</a>, <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro ($190)</a>, and <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG Reloaded ($210)</a>. The Steam Controller is not a competitive pad that could go toe-to-toe with many of these for competitive play and understandably carries a much lower price tag for that consideration.</p><p>On the cheaper end, pads like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite ($25)</a>, <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">EasySMX D05 ($45)</a>, <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10 ($60)</a>, and <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-mode ($80)</a>. In some ways, these offer similar if not slightly improved features to the Steam Controller: the GameSir Nova Lite 2 has Hall effect thumbsticks, a 1000 Hz polling rate, trigger stops, and a mechanical D-pad for <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_3?" target="_blank">$27</a>. These budget pads don't always feel super polished in terms of inputs and feel, but then neither does the Steam Controller.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MKury4PjJvZ2Kog4A2ovNY" name="IMG_4227_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/MKury4PjJvZ2Kog4A2ovNY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So, the Steam Controller can't compete with competitive controllers, nor on value for money with simpler pads. It can, however, compete on its all-round utility. You have to ask yourself how much value you assign to not having to get up off the couch to navigate the desktop or play a strategy game.</p><p>Personally, I could go without the extra inputs most of the time. Valve already provides a useful and free alternative to mouse and keyboard in Big Picture Mode, which offers easy access to most of what Steam has to offer and can be navigated easily with a standard controller. I mostly play horror, rhythm, and racing games on my living room PC, and as such, I don't find myself having to grab a keyboard or mouse all that often. </p><p>PC gaming usually requires some amount of messing around in the settings or copying files, and in those cases, the Steam Controller comes into its own.</p><p>While there are other controllers with gyro controls, through its trackpads and software integration, the Steam Controller offers a complete package that few others do. Though just because it can do a lot of stuff, doesn't mean you need it to—a more affordable pad with less going will be good enough for many PC gamers.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777461236712-pw1uv9eih *, #fv-chart-1777461236712-pw1uv9eih *:before, #fv-chart-1777461236712-pw1uv9eih *:after, #fv-chart-1777461236712-pw1uv9eih-slideshow *, #fv-chart-1777461236712-pw1uv9eih-slideshow *:before, #fv-chart-1777461236712-pw1uv9eih-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461236712-pw1uv9eih, #fv-chart-1777461236712-pw1uv9eih-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461236712-pw1uv9eih {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461236712-pw1uv9eih .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777461236712-pw1uv9eih-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461236712-pw1uv9eih .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777461236712-pw1uv9eih .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777461236712-pw1uv9eih .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777461236712-pw1uv9eih .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777461236712-pw1uv9eih .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-expand-btn,    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-expand-btn:hover,    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461236712-pw1uv9eih .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461236712-pw1uv9eih .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461236712-pw1uv9eih .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461236712-pw1uv9eih .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-row, #fv-chart-1777461236712-pw1uv9eih .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777461236712-pw1uv9eih .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461236712-pw1uv9eih .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461236712-pw1uv9eih .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461236712-pw1uv9eih .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461236712-pw1uv9eih .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-pie-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-row,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-stacked-product,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-row,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-stacked-product,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-label,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-product-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-label,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-container,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-cluster,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-benchmark-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-dropdown-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-chart-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-chart-subhead,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-header,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-vs,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461236712-pw1uv9eih.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461236712-pw1uv9eih .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-row,        #fv-chart-1777461236712-pw1uv9eih .fv-stacked-product,        #fv-chart-1777461236712-pw1uv9eih .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-label,        #fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-container,        #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461236712-pw1uv9eih .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461236712-pw1uv9eih.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Valve has a unique offering in the Steam Controller and its price tag reflects that. But you could spend a lot less on a gamepad",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:13:56.713Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Value",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461236712-pw1uv9eih" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Valve has a unique offering in the Steam Controller and its price tag reflects that. But you could spend a lot less on a gamepad</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461236712-pw1uv9eih-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Value: 3 ">                    <div class="fv-bar-label">Value</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Value ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777461236712-pw1uv9eih', false); });      } else {        initialize('fv-chart-1777461236712-pw1uv9eih', false);      }    })();      </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New Steam Controller reportedly $99 ]]></title>
                                                                                                <dc:content><![CDATA[ <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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/new-steam-controller-reportedly-usd99/</link>
                                                                            <description>
                            <![CDATA[ Premium price? Definitely. Premium product? We'll see. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3L5eXH3NjHxfNwo5qXMrkh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 25 Apr 2026 17:59:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/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>
            </channel>
</rss>