<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-GB"
                       href="https://www.pcgamer.com/uk/feeds/tag/gaming-mice/"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from PC Gamer UK in Gaming-mice ]]></title>
                <link>https://www.pcgamer.com/uk/hardware/gaming-mice</link>
        <description><![CDATA[ All the latest gaming-mice content from the PC Gamer  UK team ]]></description>
                                    <lastBuildDate>Fri, 02 Oct 2026 11:53:19 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ In my quest to find the perfect mouse for me, I've ended up with two completely different ones ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The odd thing about computer mice—gaming, ergonomic, or otherwise—is how subjective they are. I guess we've all got different hand shapes, finger lengths, and technical needs. I've been hunting for the perfect mouse for my particular hands for years now, and I've refined my selection down to two. </p><p>Unfortunately, they couldn't be more different, so I guess I'm a two-mouse sort of guy now. One is the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mx-master-4-review/" target="_blank">Logitech MX Master 4</a>, an ergonomic mouse with a poor sensor for gaming, but an excellent shape for all-day work usage. It's also near-silent, which the rest of my household is very grateful for.</p><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="cfxpiyP7mXhzMKutqutUFW" name="20261002_115045" alt="A Logitech MX Master 4 and a Razer Cobra HyperSpeed gaming mouse next to each other on a mouse pad" src="https://cdn.mos.cms.futurecdn.net/cfxpiyP7mXhzMKutqutUFW-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And the other is the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-cobra-hyperspeed-review/" target="_blank">Razer Cobra HyperSpeed</a>, a tiny rodent with exactly the sort of weight and technical specs I like for gaming, all for a relatively reasonable sum. Looking at the two together, they're completely chalk and cheese. Neither mouse is perfect, but switching between the two is the best solution I've found for all my computing needs.</p><p>As I sit here during a workday, typing out this article, it's the MX Master 4 that keeps me company. While I technically prefer the <a href="https://www.amazon.com/Logitech-MX-Master-3S-Performance/dp/B0B11LJ69K/" target="_blank">MX Master 3S</a>, I managed to damage the rubber coating of mine when I took it apart for cleaning, so I've switched to the newer model. </p><p>It's not quite as comfy as the 3S, but it's still a weighty rodent with a horizontal scroll wheel for spreadsheets and a selection of programmable buttons that come in handy for my daily tasks.</p><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="NHcE2RVnxSs8UmDWLKBbvb" name="20261002_121816" alt="An ergonomic mouse and a gaming mouse, facing each other" src="https://cdn.mos.cms.futurecdn.net/NHcE2RVnxSs8UmDWLKBbvb-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When I want to play something fast-paced, though, I swap over to the Cobra HyperSpeed. It's tiny, which makes it perfect for quick fingertip movements. It's also got a speedy sensor, brilliantly clicky, satisfying switches, and a little dash of near-tasteful RGB lighting underneath.</p><p>It's a bit like cars. In an ideal world (in which I could afford to have two automobiles on my driveway), I'd have a big, wallowing cruiser for getting me to the office in comfort, and a little two-seater sports car to bomb around in on the weekends. Which is exactly how I use these two mice.</p><p>But the stark difference between the two makes me think that, for my purposes, the perfect mouse doesn't exist. I've tried lots of them over the past few years, but this combo is the one I've stuck with for a while now, and it's probably where I'm going to stay.</p><p>Neither is technically the best on the market for all purposes. But once you've found a system that works for you, it's difficult to change—which means I guess I'm a dual-wielder from this point forward. As are, I notice, <a href="https://www.pcgamer.com/hardware/whats-on-pc-gamers-desk/" target="_blank">several other members of the PC Gamer team.</a> What's next, two gaming chairs? This double-hardware lifestyle is going to get expensive, I can tell.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/in-my-quest-to-find-the-perfect-mouse-for-me-ive-ended-up-with-two-completely-different-ones/</link>
                                                                            <description>
                            <![CDATA[ I guess I'm just picky. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cNTgtywb4TFVajubpZtA8J</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gtntdXbZR368KXZgfmpxEN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 11:53:19 +0000</pubDate>                                                                                                                                <updated>Fri, 02 Oct 2026 11:53:28 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gtntdXbZR368KXZgfmpxEN-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech MX Master 4 and Razer Cobra HyperSpeed mouse next to a gaming keyboard]]></media:description>                                                            <media:text><![CDATA[A Logitech MX Master 4 and Razer Cobra HyperSpeed mouse next to a gaming keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech MX Master 4 and Razer Cobra HyperSpeed mouse next to a gaming keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gtntdXbZR368KXZgfmpxEN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The odd thing about computer mice—gaming, ergonomic, or otherwise—is how subjective they are. I guess we've all got different hand shapes, finger lengths, and technical needs. I've been hunting for the perfect mouse for my particular hands for years now, and I've refined my selection down to two. </p><p>Unfortunately, they couldn't be more different, so I guess I'm a two-mouse sort of guy now. One is the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mx-master-4-review/" target="_blank">Logitech MX Master 4</a>, an ergonomic mouse with a poor sensor for gaming, but an excellent shape for all-day work usage. It's also near-silent, which the rest of my household is very grateful for.</p><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="cfxpiyP7mXhzMKutqutUFW" name="20261002_115045" alt="A Logitech MX Master 4 and a Razer Cobra HyperSpeed gaming mouse next to each other on a mouse pad" src="https://cdn.mos.cms.futurecdn.net/cfxpiyP7mXhzMKutqutUFW-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And the other is the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-cobra-hyperspeed-review/" target="_blank">Razer Cobra HyperSpeed</a>, a tiny rodent with exactly the sort of weight and technical specs I like for gaming, all for a relatively reasonable sum. Looking at the two together, they're completely chalk and cheese. Neither mouse is perfect, but switching between the two is the best solution I've found for all my computing needs.</p><p>As I sit here during a workday, typing out this article, it's the MX Master 4 that keeps me company. While I technically prefer the <a href="https://www.amazon.com/Logitech-MX-Master-3S-Performance/dp/B0B11LJ69K/" target="_blank">MX Master 3S</a>, I managed to damage the rubber coating of mine when I took it apart for cleaning, so I've switched to the newer model. </p><p>It's not quite as comfy as the 3S, but it's still a weighty rodent with a horizontal scroll wheel for spreadsheets and a selection of programmable buttons that come in handy for my daily tasks.</p><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="NHcE2RVnxSs8UmDWLKBbvb" name="20261002_121816" alt="An ergonomic mouse and a gaming mouse, facing each other" src="https://cdn.mos.cms.futurecdn.net/NHcE2RVnxSs8UmDWLKBbvb-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When I want to play something fast-paced, though, I swap over to the Cobra HyperSpeed. It's tiny, which makes it perfect for quick fingertip movements. It's also got a speedy sensor, brilliantly clicky, satisfying switches, and a little dash of near-tasteful RGB lighting underneath.</p><p>It's a bit like cars. In an ideal world (in which I could afford to have two automobiles on my driveway), I'd have a big, wallowing cruiser for getting me to the office in comfort, and a little two-seater sports car to bomb around in on the weekends. Which is exactly how I use these two mice.</p><p>But the stark difference between the two makes me think that, for my purposes, the perfect mouse doesn't exist. I've tried lots of them over the past few years, but this combo is the one I've stuck with for a while now, and it's probably where I'm going to stay.</p><p>Neither is technically the best on the market for all purposes. But once you've found a system that works for you, it's difficult to change—which means I guess I'm a dual-wielder from this point forward. As are, I notice, <a href="https://www.pcgamer.com/hardware/whats-on-pc-gamers-desk/" target="_blank">several other members of the PC Gamer team.</a> What's next, two gaming chairs? This double-hardware lifestyle is going to get expensive, I can tell.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Metal desks nearly destroyed a Valorant tournament ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Wireless gaming mice are great and have only gotten better with time. They're so good, in fact, that I would not go for a wired model unless I was really looking for a budget option. And yet it turns out wired mice were the best choice for the Valorant Champions tournament in Shanghai, where custom desks were apparently interfering with the signal. </p><p>The <a href="https://x.com/ValorantEsports/status/2105511432020492715" target="_blank">Valorant Esports X page</a> recently revealed that "repeated mouse interference issues have caused multiple tech pauses and disrupted our most important tournament of the year" and that it would be asking all players to swap to wired mice until the problem is fixed. </p><p>In a match between FUT Esports and 100 Thieves, player xeus had an issue with their mouse where it was unable to fire. Xeus is part of FUT, which lost to 100 Thieves, two to zero. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>Riot claims, "Following an official post-game evaluation, we concluded that a round rollback should have been allowed. We take responsibility for that error." Riot also said, "After considering the available options, we have decided that the match result will stand, as other options would result in overturning a victory by a team that competed under the same conditions and was not responsible for the error."</p><p>Riot fabricated custom metal desks for the tournament, and believes the material choice could be the cause of the interference problem here. For most players, they will be able to use their wireless mouse simply in wired mode, but some mice without USB Type-C ports, like the recent <a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-rival-pro-gaming-mouse-review/" target="_blank">SteelSeries Rival Pro</a>, would pose a significant problem. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2105511432020492715"><p lang="en" dir="ltr">An update on VALORANT Champions Shanghai. pic.twitter.com/AWkQAMwUsS<a href="https://twitter.com/cantworkitout/status/2105511432020492715">October 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>In this use case, a pro would have to swap the mouse altogether, which means getting used to a new shape, weight, and feel. At the highest level, this could be a slight disadvantage. </p><p>But even using the same mouse, being tethered to your rig poses a slight problem too, as it adds some resistance in movement. This will likely mean that many players have to ever so slightly change the way they play for the tournament, or at least until things are fixed. </p><p>There's a reason why wireless mice are so popular among competitive players. They're easy to move around; you don't have to factor in the tether of the cable as you move your arm, and polling rates are now so high that wireless mice are as quick as wired. Regardless of how fast this issue is fixed, it's still likely quite the setback for pro players, and may make them bring a spare USB cable with them in the future. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/metal-desks-nearly-destroyed-a-valorant-tournament/</link>
                                                                            <description>
                            <![CDATA[ And players have been urged to switch to wired mice. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7638SSPzte4i7CmZ6XEnse</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3dy2mR9sobpcUgSkfyg5vm-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 11:51:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/3dy2mR9sobpcUgSkfyg5vm-1920-80.jpg">
                                                            <media:credit><![CDATA[Riot Games]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valorant]]></media:description>                                                            <media:text><![CDATA[Valorant]]></media:text>
                                <media:title type="plain"><![CDATA[Valorant]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3dy2mR9sobpcUgSkfyg5vm-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Wireless gaming mice are great and have only gotten better with time. They're so good, in fact, that I would not go for a wired model unless I was really looking for a budget option. And yet it turns out wired mice were the best choice for the Valorant Champions tournament in Shanghai, where custom desks were apparently interfering with the signal. </p><p>The <a href="https://x.com/ValorantEsports/status/2105511432020492715" target="_blank">Valorant Esports X page</a> recently revealed that "repeated mouse interference issues have caused multiple tech pauses and disrupted our most important tournament of the year" and that it would be asking all players to swap to wired mice until the problem is fixed. </p><p>In a match between FUT Esports and 100 Thieves, player xeus had an issue with their mouse where it was unable to fire. Xeus is part of FUT, which lost to 100 Thieves, two to zero. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>Riot claims, "Following an official post-game evaluation, we concluded that a round rollback should have been allowed. We take responsibility for that error." Riot also said, "After considering the available options, we have decided that the match result will stand, as other options would result in overturning a victory by a team that competed under the same conditions and was not responsible for the error."</p><p>Riot fabricated custom metal desks for the tournament, and believes the material choice could be the cause of the interference problem here. For most players, they will be able to use their wireless mouse simply in wired mode, but some mice without USB Type-C ports, like the recent <a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-rival-pro-gaming-mouse-review/" target="_blank">SteelSeries Rival Pro</a>, would pose a significant problem. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2105511432020492715"><p lang="en" dir="ltr">An update on VALORANT Champions Shanghai. pic.twitter.com/AWkQAMwUsS<a href="https://twitter.com/cantworkitout/status/2105511432020492715">October 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>In this use case, a pro would have to swap the mouse altogether, which means getting used to a new shape, weight, and feel. At the highest level, this could be a slight disadvantage. </p><p>But even using the same mouse, being tethered to your rig poses a slight problem too, as it adds some resistance in movement. This will likely mean that many players have to ever so slightly change the way they play for the tournament, or at least until things are fixed. </p><p>There's a reason why wireless mice are so popular among competitive players. They're easy to move around; you don't have to factor in the tether of the cable as you move your arm, and polling rates are now so high that wireless mice are as quick as wired. Regardless of how fast this issue is fixed, it's still likely quite the setback for pro players, and may make them bring a spare USB cable with them in the future. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I spent far too long assigning gaming mouse values based on their price-to-weight ratio, and the runner-up is the rodent on my desk right now ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You may know the trick of checking price in relation to weight, rather than full price, at a supermarket, to account for different pack sizes, but have you ever thought of applying that same metric to gaming mice? Me neither, until our Dave spotted such a rubric on Amazon. The <a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L?th=1" target="_blank">Turtle Beach Burst II Air Amazon listing</a> has a price-to-ounce ratio, and that got me thinking: which mouse would offer the best price-to-gram ratio? </p><p>Yes, it may be a bit silly to value price relative to weight, as it's favouring cheap but heavy mice, and it might mean that some ultralight mice get the short end of the stick, <em>and </em>some might argue that price-to-gram tells you less about whether you should buy the mouse than price by itself, but you've gotta take that one up with Mr Bezos. I'm just the messenger, and as we all know, the messenger never gets shot. </p><p>And most scientists are unappreciated in their time. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>As a fierce rodent scientist, I fear this specific study needs much more than just working out the weight-to-price ratio. Thus, my own personal rubric was born, an unholy alliance of two different scores that are then averaged together.</p><p>First, the price-to-weight ratio. Here, I grabbed the weight of the mouse and the MSRP, then assigned it a grams-per-dollar value. Some mice have slightly different weights (like the SteelSeries Rival Pro white and black models, which are one gram different), so I took the lowest available. From here, I graphed every pick on a scale and assigned a value based on how well they rank. The mouse at the very bottom of this graph would be assigned 100%, and the mouse on the total opposite end would get 0%. </p><p>In the name of unadulterated overkill, for science, my method was to get the difference between the highest- and lowest-value mouse, then divide that difference by 100 to get 1% (0.034), and then calculate the difference between either end and the scored mouse in measures of 0.034. </p><p>Finally, to account for quality, I would grab our review score (which does mean this specific study can only happen with mice we've reviewed). The combination of these two gets you what I am tentatively calling the PC Gamer price-to-weight-to-value-to-quality score, or the <em>James score </em>for short. Catchy name, I know.</p><p>Yes, this does mean that the data is held back specifically by mice we've reviewed, but I can live with that. Anyway, here are the numbers. </p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p>Price ($)</p></td><td  ><p>Weight (g)</p></td><td  ><p>Cost per gram</p></td><td  ><p>Price-to-weight value (%)</p></td><td  ><p>Review score (%)</p></td><td  ><p>Final Score (%)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-rival-pro-gaming-mouse-review/" target="_blank">SteelSeries Rival Pro</a></p></td><td  ><p>180</p></td><td  ><p>53</p></td><td  ><p>3.4</p></td><td  ><p>16</p></td><td  ><p>89</p></td><td  ><p>52.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/angrymiao-am-infinity-97-mouse-review/" target="_blank">AngryMiao AM Infinity. 97</a></p></td><td  ><p>189</p></td><td  ><p>47</p></td><td  ><p>4.0</p></td><td  ><p>0</p></td><td  ><p>88</p></td><td  ><p>44</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-naga-v3-pro-review/" target="_blank">Razer Naga V3 Pro</a></p></td><td  ><p>180</p></td><td  ><p>112</p></td><td  ><p>1.61</p></td><td  ><p>69</p></td><td  ><p>84</p></td><td  ><p>76.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/asus-rog-harpe-ii-extreme-edition-20-review/" target="_blank">Asus ROG Harpe II Extreme Edition 20</a></p></td><td  ><p>260</p></td><td  ><p>82 </p></td><td  ><p>3.17</p></td><td  ><p>23</p></td><td  ><p>72</p></td><td  ><p>47.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-feinmann-f01-noctua-edition-review/" target="_blank">Pulsar Feinmann F01 Noctua Edition</a></p></td><td  ><p>180</p></td><td  ><p>73</p></td><td  ><p>2.47</p></td><td  ><p>44</p></td><td  ><p>73</p></td><td  ><p>58.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-k7-v2-ultra-review/" target="_blank">Mchose K7 V2 Ultra+</a></p></td><td  ><p>89</p></td><td  ><p>59</p></td><td  ><p>1.51</p></td><td  ><p>72</p></td><td  ><p>89</p></td><td  ><p>80.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/asus-proart-mouse-md301/" target="_blank">Asus ProArt Mouse MD301</a></p></td><td  ><p>100</p></td><td  ><p>100</p></td><td  ><p>1</p></td><td  ><p>87</p></td><td  ><p>71</p></td><td  ><p>79</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mobi-fold-review/" target="_blank">Logitech Mobi Fold</a></p></td><td  ><p>80</p></td><td  ><p>79</p></td><td  ><p>1.01</p></td><td  ><p>87</p></td><td  ><p>65</p></td><td  ><p>76</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g305-x-superlight-review/" target="_blank">Logitech G305 X Superlight</a></p></td><td  ><p>80</p></td><td  ><p>59</p></td><td  ><p>1.36</p></td><td  ><p>76</p></td><td  ><p>70</p></td><td  ><p>73</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/msi-versa-300-wireless-8k-review/" target="_blank">MSI Versa 300 Wireless 8K</a></p></td><td  ><p>100</p></td><td  ><p>66</p></td><td  ><p>1.52</p></td><td  ><p>72</p></td><td  ><p>72</p></td><td  ><p>72</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/protoarc-em25-ergonomic-mouse-review/" target="_blank">Protoarc EM25 </a></p></td><td  ><p>50</p></td><td  ><p>90</p></td><td  ><p>0.56</p></td><td  ><p>100</p></td><td  ><p>40</p></td><td  ><p>70</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/zowie-ec2-dw-review/" target="_blank">Zowie EC2-DW</a></p></td><td  ><p>150</p></td><td  ><p>60</p></td><td  ><p>1.67</p></td><td  ><p>67</p></td><td  ><p>82</p></td><td  ><p>74.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-aerox-3-wireless-gen-2-review/" target="_blank">SteelSeries Aerox 3 Wireless Gen 2</a></p></td><td  ><p>100</p></td><td  ><p>68</p></td><td  ><p>1.47</p></td><td  ><p>73</p></td><td  ><p>84</p></td><td  ><p>78.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a></p></td><td  ><p>160</p></td><td  ><p>49</p></td><td  ><p>3.26</p></td><td  ><p>21</p></td><td  ><p>95</p></td><td  ><p>58</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a></p></td><td  ><p>34</p></td><td  ><p>59</p></td><td  ><p>1.74</p></td><td  ><p>65</p></td><td  ><p>84</p></td><td  ><p>74.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">Pulsar X3 Crazylight Mini</a></p></td><td  ><p>156</p></td><td  ><p>43</p></td><td  ><p>3.63</p></td><td  ><p>10</p></td><td  ><p>89</p></td><td  ><p>49.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-wireless-cf-review/" target="_blank">Corsair Sabre V2 Pro Wireless CF</a></p></td><td  ><p>200</p></td><td  ><p>55</p></td><td  ><p>3.64</p></td><td  ><p>9</p></td><td  ><p>68</p></td><td  ><p>38.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-l7-pro-review/" target="_blank">Mchose L7 Pro+</a></p></td><td  ><p>60</p></td><td  ><p>43</p></td><td  ><p>1.40</p></td><td  ><p>75</p></td><td  ><p>85</p></td><td  ><p>80</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-cobra-hyperspeed-review/" target="_blank">Razer Cobra Hyperspeed</a></p></td><td  ><p>99</p></td><td  ><p>62</p></td><td  ><p>1.6</p></td><td  ><p>69</p></td><td  ><p>86</p></td><td  ><p>77.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a></p></td><td  ><p>180</p></td><td  ><p>59</p></td><td  ><p>3.05</p></td><td  ><p>27</p></td><td  ><p>95</p></td><td  ><p>61</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a></p></td><td  ><p>50</p></td><td  ><p>77</p></td><td  ><p>0.65</p></td><td  ><p>97</p></td><td  ><p>87</p></td><td  ><p>92</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair Sabre V2 Pro Ultralight</a></p></td><td  ><p>100</p></td><td  ><p>36</p></td><td  ><p>2.78</p></td><td  ><p>35</p></td><td  ><p>92</p></td><td  ><p>63.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-deathadder-v4-pro-review/" target="_blank">Razer Deathadder V4 Pro</a></p></td><td  ><p>170</p></td><td  ><p>56</p></td><td  ><p>3.04</p></td><td  ><p>27</p></td><td  ><p>90</p></td><td  ><p>58.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o-eternal-review/" target="_blank">Glorious Model O Eternal</a></p></td><td  ><p>40</p></td><td  ><p>55 </p></td><td  ><p>0.73</p></td><td  ><p>95</p></td><td  ><p>92</p></td><td  ><p>93.5</p></td></tr></tbody></table></div><p>So, if you are looking to pick up a new gaming mouse and want the most grams for the least amount of money, and want something that we have personally tried and recommend, the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o-eternal-review/" target="_blank">Glorious Model O Eternal</a> has placed at the very top of the <em>PC Gamer. price-to-weight-to-value-to-quality score</em> table. That's funny timing, as I happen to have recommended that exact mouse as a <a href="https://www.pcgamer.com/hardware/gaming-mice/this-usd30-gaming-mouse-proves-you-dont-need-8-000-hz-polling-at-65-000-dpi-for-a-good-time/" target="_blank">good budget buy this week</a>. </p><p>Second place is the <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a>, which coincidentally happens to be the <a href="https://www.pcgamer.com/hardware/whats-on-pc-gamers-desk/" target="_blank">mouse I keep on my desk</a>, and joint third place is two different Mchose mice. </p><p>As time has gone on, many gamers are looking for the lightest mouse possible and are willing to pay more for the privilege, which shows how strange this Amazon measurement is. And as such, I thought this test would show how silly the weight-to-gram ratio is, but my super fancy, very scientific analysis shows that solidly built budget mice are the best out there. And yeah, for most people, I think that's bang on. Thanks, Jeff. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/i-spent-far-too-long-assigning-gaming-mouse-values-based-on-their-price-to-weight-ratio-and-the-runner-up-is-the-rodent-on-my-desk-right-now/</link>
                                                                            <description>
                            <![CDATA[ You know, I'm something of a rodent scientist myself. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">y3waWDGyjZmKmGfNTzhcsT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3Ct5QMSXdePLaepLmTBmjA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 10:13:16 +0000</pubDate>                                                                                                                                <updated>Thu, 01 Oct 2026 12:17:00 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/3Ct5QMSXdePLaepLmTBmjA-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer DeathAdder V4 Pro and white V3 Pro gaming mice]]></media:description>                                                            <media:text><![CDATA[Razer DeathAdder V4 Pro and white V3 Pro gaming mice]]></media:text>
                                <media:title type="plain"><![CDATA[Razer DeathAdder V4 Pro and white V3 Pro gaming mice]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3Ct5QMSXdePLaepLmTBmjA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You may know the trick of checking price in relation to weight, rather than full price, at a supermarket, to account for different pack sizes, but have you ever thought of applying that same metric to gaming mice? Me neither, until our Dave spotted such a rubric on Amazon. The <a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L?th=1" target="_blank">Turtle Beach Burst II Air Amazon listing</a> has a price-to-ounce ratio, and that got me thinking: which mouse would offer the best price-to-gram ratio? </p><p>Yes, it may be a bit silly to value price relative to weight, as it's favouring cheap but heavy mice, and it might mean that some ultralight mice get the short end of the stick, <em>and </em>some might argue that price-to-gram tells you less about whether you should buy the mouse than price by itself, but you've gotta take that one up with Mr Bezos. I'm just the messenger, and as we all know, the messenger never gets shot. </p><p>And most scientists are unappreciated in their time. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>As a fierce rodent scientist, I fear this specific study needs much more than just working out the weight-to-price ratio. Thus, my own personal rubric was born, an unholy alliance of two different scores that are then averaged together.</p><p>First, the price-to-weight ratio. Here, I grabbed the weight of the mouse and the MSRP, then assigned it a grams-per-dollar value. Some mice have slightly different weights (like the SteelSeries Rival Pro white and black models, which are one gram different), so I took the lowest available. From here, I graphed every pick on a scale and assigned a value based on how well they rank. The mouse at the very bottom of this graph would be assigned 100%, and the mouse on the total opposite end would get 0%. </p><p>In the name of unadulterated overkill, for science, my method was to get the difference between the highest- and lowest-value mouse, then divide that difference by 100 to get 1% (0.034), and then calculate the difference between either end and the scored mouse in measures of 0.034. </p><p>Finally, to account for quality, I would grab our review score (which does mean this specific study can only happen with mice we've reviewed). The combination of these two gets you what I am tentatively calling the PC Gamer price-to-weight-to-value-to-quality score, or the <em>James score </em>for short. Catchy name, I know.</p><p>Yes, this does mean that the data is held back specifically by mice we've reviewed, but I can live with that. Anyway, here are the numbers. </p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p>Price ($)</p></td><td  ><p>Weight (g)</p></td><td  ><p>Cost per gram</p></td><td  ><p>Price-to-weight value (%)</p></td><td  ><p>Review score (%)</p></td><td  ><p>Final Score (%)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-rival-pro-gaming-mouse-review/" target="_blank">SteelSeries Rival Pro</a></p></td><td  ><p>180</p></td><td  ><p>53</p></td><td  ><p>3.4</p></td><td  ><p>16</p></td><td  ><p>89</p></td><td  ><p>52.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/angrymiao-am-infinity-97-mouse-review/" target="_blank">AngryMiao AM Infinity. 97</a></p></td><td  ><p>189</p></td><td  ><p>47</p></td><td  ><p>4.0</p></td><td  ><p>0</p></td><td  ><p>88</p></td><td  ><p>44</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-naga-v3-pro-review/" target="_blank">Razer Naga V3 Pro</a></p></td><td  ><p>180</p></td><td  ><p>112</p></td><td  ><p>1.61</p></td><td  ><p>69</p></td><td  ><p>84</p></td><td  ><p>76.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/asus-rog-harpe-ii-extreme-edition-20-review/" target="_blank">Asus ROG Harpe II Extreme Edition 20</a></p></td><td  ><p>260</p></td><td  ><p>82 </p></td><td  ><p>3.17</p></td><td  ><p>23</p></td><td  ><p>72</p></td><td  ><p>47.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-feinmann-f01-noctua-edition-review/" target="_blank">Pulsar Feinmann F01 Noctua Edition</a></p></td><td  ><p>180</p></td><td  ><p>73</p></td><td  ><p>2.47</p></td><td  ><p>44</p></td><td  ><p>73</p></td><td  ><p>58.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-k7-v2-ultra-review/" target="_blank">Mchose K7 V2 Ultra+</a></p></td><td  ><p>89</p></td><td  ><p>59</p></td><td  ><p>1.51</p></td><td  ><p>72</p></td><td  ><p>89</p></td><td  ><p>80.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/asus-proart-mouse-md301/" target="_blank">Asus ProArt Mouse MD301</a></p></td><td  ><p>100</p></td><td  ><p>100</p></td><td  ><p>1</p></td><td  ><p>87</p></td><td  ><p>71</p></td><td  ><p>79</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mobi-fold-review/" target="_blank">Logitech Mobi Fold</a></p></td><td  ><p>80</p></td><td  ><p>79</p></td><td  ><p>1.01</p></td><td  ><p>87</p></td><td  ><p>65</p></td><td  ><p>76</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g305-x-superlight-review/" target="_blank">Logitech G305 X Superlight</a></p></td><td  ><p>80</p></td><td  ><p>59</p></td><td  ><p>1.36</p></td><td  ><p>76</p></td><td  ><p>70</p></td><td  ><p>73</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/msi-versa-300-wireless-8k-review/" target="_blank">MSI Versa 300 Wireless 8K</a></p></td><td  ><p>100</p></td><td  ><p>66</p></td><td  ><p>1.52</p></td><td  ><p>72</p></td><td  ><p>72</p></td><td  ><p>72</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/protoarc-em25-ergonomic-mouse-review/" target="_blank">Protoarc EM25 </a></p></td><td  ><p>50</p></td><td  ><p>90</p></td><td  ><p>0.56</p></td><td  ><p>100</p></td><td  ><p>40</p></td><td  ><p>70</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/zowie-ec2-dw-review/" target="_blank">Zowie EC2-DW</a></p></td><td  ><p>150</p></td><td  ><p>60</p></td><td  ><p>1.67</p></td><td  ><p>67</p></td><td  ><p>82</p></td><td  ><p>74.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-aerox-3-wireless-gen-2-review/" target="_blank">SteelSeries Aerox 3 Wireless Gen 2</a></p></td><td  ><p>100</p></td><td  ><p>68</p></td><td  ><p>1.47</p></td><td  ><p>73</p></td><td  ><p>84</p></td><td  ><p>78.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a></p></td><td  ><p>160</p></td><td  ><p>49</p></td><td  ><p>3.26</p></td><td  ><p>21</p></td><td  ><p>95</p></td><td  ><p>58</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a></p></td><td  ><p>34</p></td><td  ><p>59</p></td><td  ><p>1.74</p></td><td  ><p>65</p></td><td  ><p>84</p></td><td  ><p>74.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">Pulsar X3 Crazylight Mini</a></p></td><td  ><p>156</p></td><td  ><p>43</p></td><td  ><p>3.63</p></td><td  ><p>10</p></td><td  ><p>89</p></td><td  ><p>49.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-wireless-cf-review/" target="_blank">Corsair Sabre V2 Pro Wireless CF</a></p></td><td  ><p>200</p></td><td  ><p>55</p></td><td  ><p>3.64</p></td><td  ><p>9</p></td><td  ><p>68</p></td><td  ><p>38.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-l7-pro-review/" target="_blank">Mchose L7 Pro+</a></p></td><td  ><p>60</p></td><td  ><p>43</p></td><td  ><p>1.40</p></td><td  ><p>75</p></td><td  ><p>85</p></td><td  ><p>80</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-cobra-hyperspeed-review/" target="_blank">Razer Cobra Hyperspeed</a></p></td><td  ><p>99</p></td><td  ><p>62</p></td><td  ><p>1.6</p></td><td  ><p>69</p></td><td  ><p>86</p></td><td  ><p>77.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a></p></td><td  ><p>180</p></td><td  ><p>59</p></td><td  ><p>3.05</p></td><td  ><p>27</p></td><td  ><p>95</p></td><td  ><p>61</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a></p></td><td  ><p>50</p></td><td  ><p>77</p></td><td  ><p>0.65</p></td><td  ><p>97</p></td><td  ><p>87</p></td><td  ><p>92</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair Sabre V2 Pro Ultralight</a></p></td><td  ><p>100</p></td><td  ><p>36</p></td><td  ><p>2.78</p></td><td  ><p>35</p></td><td  ><p>92</p></td><td  ><p>63.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/razer-deathadder-v4-pro-review/" target="_blank">Razer Deathadder V4 Pro</a></p></td><td  ><p>170</p></td><td  ><p>56</p></td><td  ><p>3.04</p></td><td  ><p>27</p></td><td  ><p>90</p></td><td  ><p>58.5</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o-eternal-review/" target="_blank">Glorious Model O Eternal</a></p></td><td  ><p>40</p></td><td  ><p>55 </p></td><td  ><p>0.73</p></td><td  ><p>95</p></td><td  ><p>92</p></td><td  ><p>93.5</p></td></tr></tbody></table></div><p>So, if you are looking to pick up a new gaming mouse and want the most grams for the least amount of money, and want something that we have personally tried and recommend, the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o-eternal-review/" target="_blank">Glorious Model O Eternal</a> has placed at the very top of the <em>PC Gamer. price-to-weight-to-value-to-quality score</em> table. That's funny timing, as I happen to have recommended that exact mouse as a <a href="https://www.pcgamer.com/hardware/gaming-mice/this-usd30-gaming-mouse-proves-you-dont-need-8-000-hz-polling-at-65-000-dpi-for-a-good-time/" target="_blank">good budget buy this week</a>. </p><p>Second place is the <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a>, which coincidentally happens to be the <a href="https://www.pcgamer.com/hardware/whats-on-pc-gamers-desk/" target="_blank">mouse I keep on my desk</a>, and joint third place is two different Mchose mice. </p><p>As time has gone on, many gamers are looking for the lightest mouse possible and are willing to pay more for the privilege, which shows how strange this Amazon measurement is. And as such, I thought this test would show how silly the weight-to-gram ratio is, but my super fancy, very scientific analysis shows that solidly built budget mice are the best out there. And yeah, for most people, I think that's bang on. Thanks, Jeff. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I spent an unreasonable amount of time testing whether Logitech's Superstrike analogue clicks actually make me react quicker ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790769720797-7baljbayq *, #fv-chart-1790769720797-7baljbayq *:before, #fv-chart-1790769720797-7baljbayq *:after, #fv-chart-1790769720797-7baljbayq-slideshow *, #fv-chart-1790769720797-7baljbayq-slideshow *:before, #fv-chart-1790769720797-7baljbayq-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790769720797-7baljbayq, #fv-chart-1790769720797-7baljbayq-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790769720797-7baljbayq {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790769720797-7baljbayq.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790769720797-7baljbayq.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-1790769720797-7baljbayq .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790769720797-7baljbayq-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1790769720797-7baljbayq-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790769720797-7baljbayq-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; }}#fv-chart-1790769720797-7baljbayq-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-1790769720797-7baljbayq-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-1790769720797-7baljbayq-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790769720797-7baljbayq-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790769720797-7baljbayq-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-1790769720797-7baljbayq-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;}#fv-chart-1790769720797-7baljbayq-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-1790769720797-7baljbayq-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790769720797-7baljbayq .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790769720797-7baljbayq .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790769720797-7baljbayq .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790769720797-7baljbayq .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790769720797-7baljbayq .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790769720797-7baljbayq .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790769720797-7baljbayq .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790769720797-7baljbayq .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790769720797-7baljbayq .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790769720797-7baljbayq .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790769720797-7baljbayq .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790769720797-7baljbayq .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790769720797-7baljbayq .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-row, #fv-chart-1790769720797-7baljbayq .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790769720797-7baljbayq.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790769720797-7baljbayq.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790769720797-7baljbayq.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790769720797-7baljbayq .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790769720797-7baljbayq .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790769720797-7baljbayq .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790769720797-7baljbayq .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790769720797-7baljbayq .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790769720797-7baljbayq .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790769720797-7baljbayq .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790769720797-7baljbayq .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790769720797-7baljbayq .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790769720797-7baljbayq .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-pie-container,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stacked-product,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-grouped-bar-product,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stacked-product,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790769720797-7baljbayq.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-1790769720797-7baljbayq.mobile-view .fv-bar-label,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-grouped-product-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-label,#fv-chart-1790769720797-7baljbayq.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-1790769720797-7baljbayq.mobile-view .fv-bar-container,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-cluster,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-container,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-x-axis-wrapper,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-x-axis-label-space,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-x-axis-chart-space,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-benchmark-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-dropdown-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-carousel-nav-btn,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-chart-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-chart-subhead,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-header,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-wrapper,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-vs,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-container,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790769720797-7baljbayq.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790769720797-7baljbayq .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790769720797-7baljbayq .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-bar-row,#fv-chart-1790769720797-7baljbayq .fv-stacked-product,#fv-chart-1790769720797-7baljbayq .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-label,#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-container,#fv-chart-1790769720797-7baljbayq .fv-bar-cluster {width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790769720797-7baljbayq .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-label-space {display: none !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790769720797-7baljbayq .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-logo,#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790769720797-7baljbayq .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790769720797-7baljbayq.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": "Optical click vs analogue click","description": "Reaction times taken and averaged from Human Benchmark ","creator": {"@type": "Organization","name": "PC Gamer","logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-30T12:02:00.797Z","citation": "I had about the same reaction time with both mice, regardless of the level of actuation I set the X3 Superstrike to.","keywords": ["Sensei Pro","X3 Superstrike (level 3)","X3 Superstrike (level 1)","Reaction time","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Sensei Pro – Reaction time","value": 176.4,"unitText": "Avg reaction time (ms)"},{"@type": "PropertyValue","name": "X3 Superstrike (level 1) – Reaction time","value": 175.1,"unitText": "Avg reaction time (ms)"},{"@type": "PropertyValue","name": "X3 Superstrike (level 3) – Reaction time","value": 177,"unitText": "Avg reaction time (ms)"}]}</script><div id="fv-chart-1790769720797-7baljbayq" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Optical click vs analogue click</h3><p class="fv-chart-subhead">Reaction times taken and averaged from Human Benchmark </p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790769720797-7baljbayq-bar-Reaction time" data-chart-type="Bar" data-title="Reaction time" data-subhead="Reaction times taken and averaged from Human Benchmark " data-caption="I had about the same reaction time with both mice, regardless of the level of actuation I set the X3 Superstrike to." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Reaction time</h4><div class="fv-bar-row"><div class="fv-bar-label ">Sensei Pro</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 88.2%; background-color: #E33235;" data-target-width="88.2" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">176.4</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">X3 Superstrike (level 3)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 88.5%; background-color: #1CA9C4;" data-target-width="88.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">177</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">X3 Superstrike (level 1)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 87.55%; background-color: #FE9F58;" data-target-width="87.55" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">175.1</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>50</span><span>100</span><span>150</span><span>200</span></div><div class="fv-x-axis-unit">Avg reaction time (ms)</div></div></div><table class="sr-only"><caption>Reaction time Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Sensei Pro</td><td>176.4</td></tr><tr><td>X3 Superstrike (level 3)</td><td>177</td></tr><tr><td>X3 Superstrike (level 1)</td><td>175.1</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">I had about the same reaction time with both mice, regardless of the level of actuation I set the X3 Superstrike to.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790769720797-7baljbayq', false); });} else {initialize('fv-chart-1790769720797-7baljbayq', false);}})();</script></div><p>The <a href="https://www.pcgamer.com/hardware/gaming-mice/sorry-early-adopters-logitech-is-releasing-an-improved-superstrike-making-the-original-all-but-obsolete-just-months-after-launch/" target="_blank">Logitech G Pro X3 Superstrike</a> (and the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">X2 Superstrike</a>) promises a reduction in latency between deciding to click and actually clicking, because you can reduce the button-press distance thanks to the analogue switches. Which is great on paper, but I wanted to see just how much of a difference it makes in practice.</p><p>I used the X2 Superstrike for a while after it came out, and I felt a difference while playing Counter-Strike, but it was difficult to know how much of that was placebo. So, now the X3 is out, I thought I'd actually test the difference compared to a mouse with regular clicks.</p><p>I used the <a href="https://humanbenchmark.com/tests/reactiontime" target="_blank">Human Benchmark reaction test</a>, and I have done so much reactive clicking this morning that I now feel I never want to engage that part of my brain again. I did 150 reactive clicks total—50 for the <a href="https://www.pcgamer.com/hardware/gaming-mice/no-usb-connectivity-like-at-all-its-a-good-job-steelseries-new-gaming-mice-are-two-of-the-best-ive-felt-under-my-fingertips/" target="_blank">SteelSeries Sensei Pro</a>, 50 for the X3 Superstrike at its lowest actuation distance (level 1), and 50 for at level 3. I made sure to swap between the mice quite frequently to ensure it wasn't just a case of me improving over time. All worth it in the name of science.</p><p>Anyway, enough preamble, let's get to it. You'll see from the chart above that, compared to the Sensei Pro, with the Superstrike I perform... about the same. I'm not comfortable saying that 1 ms difference at level 1 is due to anything other than natural variance, especially given I actually scored worse at level 3 than with the Sensei Pro.</p><p><em>The chart below shows the distribution of various testers' click latency on the Human Benchmark website.</em></p><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="82WsF99f2YjCNWHhQfJ7Ko" name="New Project" alt="A chart showing the distribution of testers' click latency on the Human Benchmark website." src="https://cdn.mos.cms.futurecdn.net/82WsF99f2YjCNWHhQfJ7Ko-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">This is the distribution of various testers' click latency on the Human Benchmark website. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Human Benchmark, humanbenchmark.com)</span></figcaption></figure><p>Now, it's probably the case that if I spent eight hours straight testing this, gathering thousands of click results, there might be a clearer difference. But that the difference isn't visible over 150 reaction tests is significant, especially given there was tons of variance between those actual results. I got some results very close to 200 ms with every mouse at every setting, and I got some close to 150 ms with every mouse at every setting.</p><p>What that tells me is that while it could be true that in the long run I could have slightly faster reactions with the Superstrike, in each individual case it's very much up in the air. Probably orders of magnitude more influenced by how much sleep I've had, how hydrated I am, and so on.</p><p>That being said, if you're a pro player who has more consistent and faster reaction time than me, I could see the faster clicks being more important. </p><p><strong>Give it a test yourself at </strong><a href="https://humanbenchmark.com/tests/reactiontime" target="_blank"><strong>Human Benchmark</strong></a><strong> and let us know where you score on the curve!</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X81Rye"></div>                            </div>                            <script src="https://kwizly.com/embed/X81Rye.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/i-spent-an-unreasonable-amount-of-time-testing-whether-logitechs-superstrike-analogue-clicks-actually-make-me-react-quicker/</link>
                                                                            <description>
                            <![CDATA[ Do inductive clicks really help lower reaction time? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5XUqBbTtE7Drd2AgtvhXmh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FVTRrBNCxLzTZ9ue6qC2AJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 13:26:52 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 13:27:33 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FVTRrBNCxLzTZ9ue6qC2AJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk.]]></media:description>                                                            <media:text><![CDATA[A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk.]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FVTRrBNCxLzTZ9ue6qC2AJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790769720797-7baljbayq *, #fv-chart-1790769720797-7baljbayq *:before, #fv-chart-1790769720797-7baljbayq *:after, #fv-chart-1790769720797-7baljbayq-slideshow *, #fv-chart-1790769720797-7baljbayq-slideshow *:before, #fv-chart-1790769720797-7baljbayq-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790769720797-7baljbayq, #fv-chart-1790769720797-7baljbayq-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790769720797-7baljbayq {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790769720797-7baljbayq.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790769720797-7baljbayq.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-1790769720797-7baljbayq .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790769720797-7baljbayq-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1790769720797-7baljbayq-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790769720797-7baljbayq-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; }}#fv-chart-1790769720797-7baljbayq-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-1790769720797-7baljbayq-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-1790769720797-7baljbayq-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790769720797-7baljbayq-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790769720797-7baljbayq-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-1790769720797-7baljbayq-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;}#fv-chart-1790769720797-7baljbayq-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-1790769720797-7baljbayq-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790769720797-7baljbayq .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790769720797-7baljbayq .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790769720797-7baljbayq .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790769720797-7baljbayq .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790769720797-7baljbayq .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790769720797-7baljbayq .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790769720797-7baljbayq .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790769720797-7baljbayq .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790769720797-7baljbayq .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790769720797-7baljbayq .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790769720797-7baljbayq .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790769720797-7baljbayq .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790769720797-7baljbayq .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790769720797-7baljbayq .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790769720797-7baljbayq .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-row, #fv-chart-1790769720797-7baljbayq .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790769720797-7baljbayq.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790769720797-7baljbayq.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790769720797-7baljbayq.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790769720797-7baljbayq .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790769720797-7baljbayq .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790769720797-7baljbayq .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790769720797-7baljbayq .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790769720797-7baljbayq .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790769720797-7baljbayq .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790769720797-7baljbayq .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790769720797-7baljbayq .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790769720797-7baljbayq .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790769720797-7baljbayq .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790769720797-7baljbayq .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-pie-container,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stacked-product,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-grouped-bar-product,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stacked-product,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790769720797-7baljbayq.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-1790769720797-7baljbayq.mobile-view .fv-bar-label,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-grouped-product-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-label,#fv-chart-1790769720797-7baljbayq.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-1790769720797-7baljbayq.mobile-view .fv-bar-container,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-cluster,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-container,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-x-axis-wrapper,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-x-axis-label-space,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-x-axis-chart-space,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-benchmark-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-dropdown-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-carousel-nav-btn,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-chart-title,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-chart-subhead,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-header,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-wrapper,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-vs,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select-container,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-versus-select,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790769720797-7baljbayq.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790769720797-7baljbayq .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790769720797-7baljbayq .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-bar-row,#fv-chart-1790769720797-7baljbayq .fv-stacked-product,#fv-chart-1790769720797-7baljbayq .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-label,#fv-chart-1790769720797-7baljbayq .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-1790769720797-7baljbayq .fv-bar-container,#fv-chart-1790769720797-7baljbayq .fv-bar-cluster {width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790769720797-7baljbayq .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790769720797-7baljbayq .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-label-space {display: none !important;}#fv-chart-1790769720797-7baljbayq .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790769720797-7baljbayq .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790769720797-7baljbayq .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-logo,#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790769720797-7baljbayq .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790769720797-7baljbayq .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790769720797-7baljbayq .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790769720797-7baljbayq.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": "Optical click vs analogue click","description": "Reaction times taken and averaged from Human Benchmark ","creator": {"@type": "Organization","name": "PC Gamer","logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-30T12:02:00.797Z","citation": "I had about the same reaction time with both mice, regardless of the level of actuation I set the X3 Superstrike to.","keywords": ["Sensei Pro","X3 Superstrike (level 3)","X3 Superstrike (level 1)","Reaction time","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Sensei Pro – Reaction time","value": 176.4,"unitText": "Avg reaction time (ms)"},{"@type": "PropertyValue","name": "X3 Superstrike (level 1) – Reaction time","value": 175.1,"unitText": "Avg reaction time (ms)"},{"@type": "PropertyValue","name": "X3 Superstrike (level 3) – Reaction time","value": 177,"unitText": "Avg reaction time (ms)"}]}</script><div id="fv-chart-1790769720797-7baljbayq" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Optical click vs analogue click</h3><p class="fv-chart-subhead">Reaction times taken and averaged from Human Benchmark </p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790769720797-7baljbayq-bar-Reaction time" data-chart-type="Bar" data-title="Reaction time" data-subhead="Reaction times taken and averaged from Human Benchmark " data-caption="I had about the same reaction time with both mice, regardless of the level of actuation I set the X3 Superstrike to." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Reaction time</h4><div class="fv-bar-row"><div class="fv-bar-label ">Sensei Pro</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 88.2%; background-color: #E33235;" data-target-width="88.2" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">176.4</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">X3 Superstrike (level 3)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 88.5%; background-color: #1CA9C4;" data-target-width="88.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">177</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">X3 Superstrike (level 1)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 87.55%; background-color: #FE9F58;" data-target-width="87.55" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">175.1</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>50</span><span>100</span><span>150</span><span>200</span></div><div class="fv-x-axis-unit">Avg reaction time (ms)</div></div></div><table class="sr-only"><caption>Reaction time Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Sensei Pro</td><td>176.4</td></tr><tr><td>X3 Superstrike (level 3)</td><td>177</td></tr><tr><td>X3 Superstrike (level 1)</td><td>175.1</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">I had about the same reaction time with both mice, regardless of the level of actuation I set the X3 Superstrike to.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790769720797-7baljbayq', false); });} else {initialize('fv-chart-1790769720797-7baljbayq', false);}})();</script></div><p>The <a href="https://www.pcgamer.com/hardware/gaming-mice/sorry-early-adopters-logitech-is-releasing-an-improved-superstrike-making-the-original-all-but-obsolete-just-months-after-launch/" target="_blank">Logitech G Pro X3 Superstrike</a> (and the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">X2 Superstrike</a>) promises a reduction in latency between deciding to click and actually clicking, because you can reduce the button-press distance thanks to the analogue switches. Which is great on paper, but I wanted to see just how much of a difference it makes in practice.</p><p>I used the X2 Superstrike for a while after it came out, and I felt a difference while playing Counter-Strike, but it was difficult to know how much of that was placebo. So, now the X3 is out, I thought I'd actually test the difference compared to a mouse with regular clicks.</p><p>I used the <a href="https://humanbenchmark.com/tests/reactiontime" target="_blank">Human Benchmark reaction test</a>, and I have done so much reactive clicking this morning that I now feel I never want to engage that part of my brain again. I did 150 reactive clicks total—50 for the <a href="https://www.pcgamer.com/hardware/gaming-mice/no-usb-connectivity-like-at-all-its-a-good-job-steelseries-new-gaming-mice-are-two-of-the-best-ive-felt-under-my-fingertips/" target="_blank">SteelSeries Sensei Pro</a>, 50 for the X3 Superstrike at its lowest actuation distance (level 1), and 50 for at level 3. I made sure to swap between the mice quite frequently to ensure it wasn't just a case of me improving over time. All worth it in the name of science.</p><p>Anyway, enough preamble, let's get to it. You'll see from the chart above that, compared to the Sensei Pro, with the Superstrike I perform... about the same. I'm not comfortable saying that 1 ms difference at level 1 is due to anything other than natural variance, especially given I actually scored worse at level 3 than with the Sensei Pro.</p><p><em>The chart below shows the distribution of various testers' click latency on the Human Benchmark website.</em></p><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="82WsF99f2YjCNWHhQfJ7Ko" name="New Project" alt="A chart showing the distribution of testers' click latency on the Human Benchmark website." src="https://cdn.mos.cms.futurecdn.net/82WsF99f2YjCNWHhQfJ7Ko-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">This is the distribution of various testers' click latency on the Human Benchmark website. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Human Benchmark, humanbenchmark.com)</span></figcaption></figure><p>Now, it's probably the case that if I spent eight hours straight testing this, gathering thousands of click results, there might be a clearer difference. But that the difference isn't visible over 150 reaction tests is significant, especially given there was tons of variance between those actual results. I got some results very close to 200 ms with every mouse at every setting, and I got some close to 150 ms with every mouse at every setting.</p><p>What that tells me is that while it could be true that in the long run I could have slightly faster reactions with the Superstrike, in each individual case it's very much up in the air. Probably orders of magnitude more influenced by how much sleep I've had, how hydrated I am, and so on.</p><p>That being said, if you're a pro player who has more consistent and faster reaction time than me, I could see the faster clicks being more important. </p><p><strong>Give it a test yourself at </strong><a href="https://humanbenchmark.com/tests/reactiontime" target="_blank"><strong>Human Benchmark</strong></a><strong> and let us know where you score on the curve!</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X81Rye"></div>                            </div>                            <script src="https://kwizly.com/embed/X81Rye.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ No USB connectivity? Like, at all? It's a good job SteelSeries' new gaming mice are two of the best I've felt under my fingertips ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/jTHKtqUSny7JDsP6ENXtsj.jpg" alt="A Steelseries Rival Pro gaming mouse."></p></div><div class="card__content"><h3 class="card__title">SteelSeries Rival Pro</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Ergo palm grip shape</li><li>UWB wireless only (no USB!)</li><li>53 g</li><li>42K DPI TrueMove 42K Pro sensor</li><li>SteelSeries Optical switches</li><li>Hot-swappable battery</li><li>$179.99 / £169.99 / €199.99</li></ul></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/GRtv98geYSJqv9uGKv8HZC.jpg" alt="A SteelSeries Sensei Pro gaming mouse."></p></div><div class="card__content"><h3 class="card__title">SteelSeries Sensei Pro</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Symmetrical claw grip shape</li><li>UWB wireless only (no USB!)</li><li>53 g</li><li>42K DPI TrueMove 42K Pro sensor</li><li>SteelSeries Optical switches</li><li>Hot-swappable battery</li><li>$179.99 / £169.99 / €199.99</li></ul></div></div></div></div><p>Last month, I visited SteelSeries HQ in Copenhagen to get a first look at some new gear, but the most surprising thing was not what was there but what was conspicuously lacking: USB ports. The two new mice I was shown, the Rival Pro and Sensei Pro, cannot be plugged in at all. A bold decision, but over the past few weeks of using both mice, I've been surprised to find that sacrifice is worth the benefits. So much so that I couldn't help but conclude in my <a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-rival-pro-gaming-mouse-review/" target="_blank">Rival Pro review</a> that SteelSeries is absolutely and unequivocally back, baby, firing on all competitive cylinders.</p><p>All this is said, however, <em>with a big asterisk</em>, this being the assumption that connectivity and functionality will hold up over time. These mice cannot afford to struggle with connectivity for firmware updates, for instance. </p><p>SteelSeries is using ultra-wideband (UWB) wireless, which is a new and niche tech that promises to be more reliable, however given it's new there's an element of 'are we <em>sure</em>' here. I've had no problems yet, but time will tell.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>The main benefit of ditching USB connectivity entirely is that presumably this is what has contributed to keeping the weight of both mice so low, despite having hot swappable batteries. We've <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">seen hot-swappable batteries before</a>, but it's still very niche for gaming mice, and at any rate, I've not seen it done in such premium feeling mice as the Rival Pro and Sensei Pro.</p><p>The Rival Pro has an ergonomic slope to it, while the Sensei Pro is symmetrical with a slight hump towards the back. Apart from the difference in shape, though, both share the same specs and the same quality feel. I feel nary a wiggle or a flex under my fingers, and apart from the more mushy-feeling (but not bad) scroll wheel, both mice feel as well-built as the most well-built mouse I've ever had my hands on: the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rJv4WL54h2L2FgkcCRaYKC-1920-80.jpg" alt="A SteelSeries Sensei Pro gaming mouse." /><figcaption>Sensei Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XhXWAMurikuk2ZjwjuW2LC-1920-80.jpg" alt="A SteelSeries Sensei Pro gaming mouse." /><figcaption>Sensei Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/68tYxpTv8vRRjaqhfXmHWC-1920-80.jpg" alt="A SteelSeries Sensei Pro gaming mouse." /><figcaption>Sensei Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d4HgWCBNQ3AhHSxwz42Prj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption>Rival Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iFsznc5VUrYGCECjpp6Hrj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption>Rival Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/K98GcWdf6pBgkY4vVJPwrj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption>Rival Pro<small role="credit">Future</small></figcaption></figure></figure><p>SteelSeries was keen on highlighting the "true" 8K of both mice, because apparently they send one packet and receive one receipt at 8K whereas most mice do things in batches. You can also set it to have a higher click polling rate than sensor polling rate to save on battery life. But I'm not too fussed about either of these things: sensor polling rate is what I care about, and I'm not too fussed about 8K anyway.</p><p>It says something, then, that assuming the connectivity doesn't putter out at any point in future—and I've had zero problems on this front so far—I'm still using the Rival Pro as my go-to mouse for Counter-Strike despite its lack of backup USB connectivity. The combination of light weight, hot swappable battery system, fantastic shapes, and top-tier build quality are what really make the proposition worth it. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R7irvhb9doBJtiboDofzqj" name="IMG_4075" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/R7irvhb9doBJtiboDofzqj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Of particular note is the fact that you're getting optical clicks, but they somehow have a gorgeous mechanical sound and feel, which is practically unheard of.</p><p>I did receive these as a review unit, though, which means I've not had to fork out $180 for the pleasure. These are <em>expensive</em> mice, make no mistake. More expensive than the Viper V4 Pro, even, though the same price as the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">X2 Superstrike</a> and just a little less than the <a href="https://www.pcgamer.com/hardware/gaming-mice/sorry-early-adopters-logitech-is-releasing-an-improved-superstrike-making-the-original-all-but-obsolete-just-months-after-launch/" target="_blank">X3 Superstrike</a>. </p><p>But they truly do feel that pleasant under the palm that I think both the Sensei Pro and Rival Pro are worth it, if you're lucky enough to have that kind of a budget. And assuming that UWB connection does indeed hold out in the long run.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/no-usb-connectivity-like-at-all-its-a-good-job-steelseries-new-gaming-mice-are-two-of-the-best-ive-felt-under-my-fingertips/</link>
                                                                            <description>
                            <![CDATA[ The SteelSeries Sensei Pro and Rival Pro are two of the best rodents I've held. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CXy8oYyAfosp98mMn22k2h</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cJV7sAUqMFaUPcQDackYWC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 15:11:50 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cJV7sAUqMFaUPcQDackYWC-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A SteelSeries Sensei Pro and Rival Pro gaming mouse.]]></media:description>                                                            <media:text><![CDATA[A SteelSeries Sensei Pro and Rival Pro gaming mouse.]]></media:text>
                                <media:title type="plain"><![CDATA[A SteelSeries Sensei Pro and Rival Pro gaming mouse.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cJV7sAUqMFaUPcQDackYWC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/jTHKtqUSny7JDsP6ENXtsj.jpg" alt="A Steelseries Rival Pro gaming mouse."></p></div><div class="card__content"><h3 class="card__title">SteelSeries Rival Pro</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Ergo palm grip shape</li><li>UWB wireless only (no USB!)</li><li>53 g</li><li>42K DPI TrueMove 42K Pro sensor</li><li>SteelSeries Optical switches</li><li>Hot-swappable battery</li><li>$179.99 / £169.99 / €199.99</li></ul></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/GRtv98geYSJqv9uGKv8HZC.jpg" alt="A SteelSeries Sensei Pro gaming mouse."></p></div><div class="card__content"><h3 class="card__title">SteelSeries Sensei Pro</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Symmetrical claw grip shape</li><li>UWB wireless only (no USB!)</li><li>53 g</li><li>42K DPI TrueMove 42K Pro sensor</li><li>SteelSeries Optical switches</li><li>Hot-swappable battery</li><li>$179.99 / £169.99 / €199.99</li></ul></div></div></div></div><p>Last month, I visited SteelSeries HQ in Copenhagen to get a first look at some new gear, but the most surprising thing was not what was there but what was conspicuously lacking: USB ports. The two new mice I was shown, the Rival Pro and Sensei Pro, cannot be plugged in at all. A bold decision, but over the past few weeks of using both mice, I've been surprised to find that sacrifice is worth the benefits. So much so that I couldn't help but conclude in my <a href="https://www.pcgamer.com/hardware/gaming-mice/steelseries-rival-pro-gaming-mouse-review/" target="_blank">Rival Pro review</a> that SteelSeries is absolutely and unequivocally back, baby, firing on all competitive cylinders.</p><p>All this is said, however, <em>with a big asterisk</em>, this being the assumption that connectivity and functionality will hold up over time. These mice cannot afford to struggle with connectivity for firmware updates, for instance. </p><p>SteelSeries is using ultra-wideband (UWB) wireless, which is a new and niche tech that promises to be more reliable, however given it's new there's an element of 'are we <em>sure</em>' here. I've had no problems yet, but time will tell.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>The main benefit of ditching USB connectivity entirely is that presumably this is what has contributed to keeping the weight of both mice so low, despite having hot swappable batteries. We've <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">seen hot-swappable batteries before</a>, but it's still very niche for gaming mice, and at any rate, I've not seen it done in such premium feeling mice as the Rival Pro and Sensei Pro.</p><p>The Rival Pro has an ergonomic slope to it, while the Sensei Pro is symmetrical with a slight hump towards the back. Apart from the difference in shape, though, both share the same specs and the same quality feel. I feel nary a wiggle or a flex under my fingers, and apart from the more mushy-feeling (but not bad) scroll wheel, both mice feel as well-built as the most well-built mouse I've ever had my hands on: the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rJv4WL54h2L2FgkcCRaYKC-1920-80.jpg" alt="A SteelSeries Sensei Pro gaming mouse." /><figcaption>Sensei Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XhXWAMurikuk2ZjwjuW2LC-1920-80.jpg" alt="A SteelSeries Sensei Pro gaming mouse." /><figcaption>Sensei Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/68tYxpTv8vRRjaqhfXmHWC-1920-80.jpg" alt="A SteelSeries Sensei Pro gaming mouse." /><figcaption>Sensei Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d4HgWCBNQ3AhHSxwz42Prj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption>Rival Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iFsznc5VUrYGCECjpp6Hrj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption>Rival Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/K98GcWdf6pBgkY4vVJPwrj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption>Rival Pro<small role="credit">Future</small></figcaption></figure></figure><p>SteelSeries was keen on highlighting the "true" 8K of both mice, because apparently they send one packet and receive one receipt at 8K whereas most mice do things in batches. You can also set it to have a higher click polling rate than sensor polling rate to save on battery life. But I'm not too fussed about either of these things: sensor polling rate is what I care about, and I'm not too fussed about 8K anyway.</p><p>It says something, then, that assuming the connectivity doesn't putter out at any point in future—and I've had zero problems on this front so far—I'm still using the Rival Pro as my go-to mouse for Counter-Strike despite its lack of backup USB connectivity. The combination of light weight, hot swappable battery system, fantastic shapes, and top-tier build quality are what really make the proposition worth it. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R7irvhb9doBJtiboDofzqj" name="IMG_4075" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/R7irvhb9doBJtiboDofzqj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Of particular note is the fact that you're getting optical clicks, but they somehow have a gorgeous mechanical sound and feel, which is practically unheard of.</p><p>I did receive these as a review unit, though, which means I've not had to fork out $180 for the pleasure. These are <em>expensive</em> mice, make no mistake. More expensive than the Viper V4 Pro, even, though the same price as the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">X2 Superstrike</a> and just a little less than the <a href="https://www.pcgamer.com/hardware/gaming-mice/sorry-early-adopters-logitech-is-releasing-an-improved-superstrike-making-the-original-all-but-obsolete-just-months-after-launch/" target="_blank">X3 Superstrike</a>. </p><p>But they truly do feel that pleasant under the palm that I think both the Sensei Pro and Rival Pro are worth it, if you're lucky enough to have that kind of a budget. And assuming that UWB connection does indeed hold out in the long run.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ SteelSeries Rival Pro gaming mouse review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="SteelSeries Rival Pro" data-widget-title=""></div><p>This has been quite the year for competitive/esports gaming mice. First we had the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> (and now the <a href="https://www.pcgamer.com/hardware/gaming-mice/sorry-early-adopters-logitech-is-releasing-an-improved-superstrike-making-the-original-all-but-obsolete-just-months-after-launch/" target="_blank">improved X3</a>), then the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. Now, with this Rival Pro, we have SteelSeries finally rejoining the former brands in the sphere of top-tier competitive gaming mice. A true return to form, in my humble opinion.</p><p>What makes for a good competitive gaming mouse? Well, it's often said that 'shape is king', so a comfy shape is certainly an important factor. In addition, you want it to be lightweight, which means no heavier than about 60 g and preferably a fair bit lighter than this. You also, of course, want flawless connectivity, an accurate and reliable sensor, and solid build quality.</p><p>As far as I'm concerned, if all those are implemented correctly, then that's everything you need to land in top-tier territory. But mice can also offer some nice-to-haves such as 8K polling and the ability to adjust things, such as lift-off distance (LOD) or sensor frame rate. They might also have completely new technologies, which is where the Superstrike gets its claim to competitive fame thanks to its inductive technology and rapid trigger clicks. </p><div ><table><caption>Rival Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Buttons</strong></p></td><td  ><p>5</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Ultra-wideband (UWB)</p></td></tr><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>TrueMove 42K Pro</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>SteelSeries Optical</p></td></tr><tr><td class="firstcol " ><p><strong>Feet</strong></p></td><td  ><p>PTFE</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>53 g (+1 g for white ver.)</p></td></tr><tr><td class="firstcol " ><p><strong>Max acceleration</strong></p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Max speed</strong></p></td><td  ><p>800 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8K</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>60 hours per battery</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>None</p></td></tr><tr><td class="firstcol " ><p><strong>Included extras</strong></p></td><td  ><p>2x hot-swappable batteries, battery charger and wireless hub, USB-C to USB-A cable.</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$179.99 / £169.99 / €199.99</p></td></tr></tbody></table></div><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 the comfiest palm grip: </strong>If you like an ergonomic slant to your mouse for a comfy palm grip, alongside the Zowie EC2-DW, the SteelSeries Rival Pro is the best I've tried. The difference being here you're also getting a lighter and more premium-feeling mouse.</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&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You want something tried and tested:</strong> There are some new technologies here (UWB, mixed polling, 'true' 8K) which should, in theory, be better than the norm. However we can't know yet whether they will cause any issues over the long-term given the complete lack of a cable for installing firmware updates, for instance.</p></div></div></div></div><p>This SteelSeries mouse doesn't have anything quite as fancy as haptic-inductive clicks, but that doesn't bar it from being a great competitive mouse, just as surely as it doesn't bar the current <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market, the Viper V4 Pro, from the same accolade. When it comes to all the other areas that make for a great competitive gaming mouse, the Rival Pro is up there with the best of them and is superb for gamers who use a palm grip. And it even has a couple of its own tricks up its sleeve.</p><div><blockquote><p>the most comfortable I've ever felt with a mouse under my hand as a palm gripper</p></blockquote></div><p>The first trick is its 'Infinite Power System', ie, hot-swappable batteries. They're designed well and once you've swapped them a few times to get used to it, you can flip the mouse over and replace it with the backup in the wireless receiver/charger very easily. There's no additional battery inside the mouse itself, so the connection will cut out when you swap, but I've had no problems at all with the mouse turning back on and connecting straight away before it hits the pad again.</p><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="K98GcWdf6pBgkY4vVJPwrj" name="IMG_4076" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/K98GcWdf6pBgkY4vVJPwrj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's necessary that this system work smoothly because SteelSeries has decided to completely remove the option to connect the mouse to your PC with a cable. It's fully wireless with no USB-C port, which is a bold decision, but I'm sure eliminating the internals for a cable also helps keep the mouse light despite its hot-swappable battery system.</p><p>In addition to the batteries, another thing that will presumably help ensure the lack of a cable isn't too much of an issue is that SteelSeries is opting for an ultra-wideband (UWB) rather than a 2.4 GHz connection. This means more bandwidth and less channel interference from other devices, which should, in theory, make for a more reliable connection, and I must say I've had zero issues with the mouse remaining connected and stable after my initial setup. We've seen whispers of other, <a href="https://www.pcgamer.com/hardware/gaming-mice/the-worlds-first-true-8k-ultra-wideband-gaming-mouse-is-here-complete-with-a-glowing-dongle-thats-supposedly-less-prone-to-unwanted-interference/" target="_blank">lesser-known brands opting for UWB connectivity</a>, but it's still very new and niche. </p><p>I naturally feel (as I think others might) a little wary of completely ditching a wired connection. But I suppose that's how many PC gamers felt when mice started going wireless in general, even with the option for a cable. And I must admit, after everything was set up the way I wanted it, my experience with this mouse's UWB connectivity and battery system has been flawless. Perhaps SteelSeries will herald in a new era that sees us cut the cord fully, and eventually we won't worry about it.</p><p>It definitely feels worth it to keep the weight low, and here we come to the nuts and bolts: shape, weight, and build quality. The long and short of it is that this is, I think, the most comfortable I've ever felt with a mouse under my hand as a palm gripper.</p><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="YgXngwCmybbYAKP9YeF2Pj" name="IMG_4064" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/YgXngwCmybbYAKP9YeF2Pj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Previously, my go-to mouse was the <a href="https://www.pcgamer.com/hardware/gaming-mice/zowie-ec2-dw-review/" target="_blank">Zowie EC2-DW</a>, which shares a similar ergonomic shape that's designed for palm grip. Comparing the two, the SteelSeries Rival Pro has a slightly less pronounced left-side slope, leaving me to feel my hand is resting a little flatter than with the Zowie. But it's still curved and ergonomic, and the curves feel, well, curvy, rather than sharp. The whole thing is helped by a nice matte texture to the surface that feels fantastic under the hand.</p><p>I'm not actually sure whether I prefer the shape of the Zowie or the Rival Pro; they both feel very similarly ergonomic and well-suited to a full palm grip for low-sensitivity gameplay in tactical shooters. It's a close call but the SteelSeries mouse is now my go-to, primarily because I prefer its matte coating and because it has the hot-swappable battery system. And because it's lighter.</p><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="JB79msTnMS6qk2KR2Kvtrj" name="IMG_4073" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/JB79msTnMS6qk2KR2Kvtrj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Build quality is fantastic, too. The buttons (including side buttons) feel sturdy and responsive and don't have a hint of pre- or post-travel to them, and try as I might I cannot get a creak out of this thing when I squeeze it. What's especially impressive is that the left and right mouse buttons are optical ones but they feel and sound mechanical rather than loud or hollow which can often happen with optical switches—SteelSeries says it worked closely with the switch manufacturer to achieve this.</p><p>The only problem I have is the scroll wheel action isn't as defined and satisfying as some others—the steps are more defined on the Viper V4 Pro and Superstrike, for instance. Still, it's far from the worst scroll wheel I've felt, and everything else about the mouse feels lovely.</p><p>You also get the option to adjust pretty much anything you might want in the SteelSeries GG software, including sensor rotation, angle snapping, lift-off distance (LOD), and so on. You can also enable 'Max Performance' mode which puts the sensor at the highest frame rate, though this will of course affect battery life.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1332px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="oyhPizXtCCSU6jVbP8c97A" name="image" alt="SteelSeries GG software showing sensor rotation and other options." src="https://cdn.mos.cms.futurecdn.net/oyhPizXtCCSU6jVbP8c97A-1920-80.jpg" mos="" align="middle" fullscreen="" width="1332" height="750" 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>These kinds of options are only available in the local GG software, whereas you can change some of the more basic options in the web software. Oh, did I forget to mention? Yes, this launch also marks the release of the <a href="https://gg.steelseries.com/dashboard" target="_blank">SteelSeries GG web app</a>, so you don't have to install anything locally if you just want to adjust polling rates.</p><p>Another trick to the Rival Pro—adding yet another tool to 2026's quickly-growing arsenal of gaming mouse technologies—is that it has what SteelSeries is keen to point out is "true" 8K polling, in a way that other gaming mice don't. </p><p>SteelSeries claims that other supposedly '8K' mice tend to send 2–8 reports of sensor data in batches for each receipt of transmission, and if any of those is missed due to interference then it's all sent together in a batch again, and this can cause lag or stutter. With this mouse, however, SteelSeries says you get true 8K because it sends one packet and receives one receipt; there's no batching or bunching up of sensor report data.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1297px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="rVcKFuMbB9ko96pzykGu34" name="image (1)" alt="A screenshot of SteelSeries GG software showing dual polling rate options." src="https://cdn.mos.cms.futurecdn.net/rVcKFuMbB9ko96pzykGu34-1920-80.jpg" mos="" align="middle" fullscreen="" width="1297" height="730" 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>SteelSeries has also come up with some new tech for the polling rate which allows you to control the sensor and connection polling rate separately. Enabling 8K polling across the board—the way that other 8K mice implement it—can be very CPU-intensive and actually lower your frame rate, plus of course make your battery run out quicker. </p><p>SteelSeries' solution, to let you set one polling rate for your sensor and another for the UWB connection in general, has the benefit of allowing you ultra-quick and responsive clicks (by enabling 8K UWB) without the performance hit and battery drain of 8K sensor polling. The '8K' is also technically '9K' as it's overclocked, but USB connections can only transmit 8K-worth of data anyway.</p><p>For my part, I'm not too fussed about this. I keep 8K UWB enabled because I haven't found it to cause any performance loss in Counter-Strike nor any significant hit to battery life, and I keep the sensor polling set to 1 kHz or 2 kHz. But I don't notice any difference between my click responsiveness at 8K UWB vs 1K UWB. Your mileage may vary; perhaps some will be able to notice a slight difference, but I don't notice any.</p><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="R7irvhb9doBJtiboDofzqj" name="IMG_4075" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/R7irvhb9doBJtiboDofzqj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Moreover, for competitive gaming it's arguably the sensor's rate that you want high anyway, and you can't select high sensor polling alongside low click polling—plus doing so likely wouldn't save much battery life anyway. Still, for anyone who wants to eke every bit of responsiveness possible out of their mouse, these new polling rate technologies are useful additions.</p><p>My time with the mouse has been smooth sailing. Smoother than smooth, in fact, given how easy the 'infinite' battery system is to use. I especially like that the little LED on the charging/connection hub can be set to show how charged your mouse is, so you don't have to be unsure when that red 'low battery' light will pop up. </p><p>Alternatively, you can set it to show you which (polling) performance mode you're in. And don't worry about being able to tell which DPI mode you're in, because when you change DPI with the underside button, a little LED on the side of your mouse lights up with the corresponding DPI level colour.</p><p>You also shouldn't worry about your batteries dying, as SteelSeries says you'll be able to buy replacement ones. So, it seems all bases are covered.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jTHKtqUSny7JDsP6ENXtsj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SL5r5eMcdzYG4yPhFm9brj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XctssEFtcNfwHWVGFXn3sj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d4HgWCBNQ3AhHSxwz42Prj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hh3EQnxoMNY4x4HoHV92sj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I'm happy with the choices SteelSeries has made here. I don't think the new technologies will be as game-changing as <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">Razer's FrameSync</a> or Logitech's HITS system, but a great hot-swappable battery system and UWB connectivity aren't anything to turn our noses up at. I just hope the complete lack of USB connectivity doesn't prove to be a problem in the long run.</p><p>Above all, I'm excited by SteelSeries' return to form in the competitive gaming mouse scene, to the extent that this mouse feels <em>almost</em> as premium as the most perfectly crafted mouse I've ever used, the Viper V4 Pro. The only thing that sets the latter apart is its scroll wheel and its inclusion of a USB port. And in fact I think the SteelSeries mouse actually has the Razer one beat when it comes to clicks, thanks to it having optical ones that sound and feel mechanical, compared to Razer's incredibly loud clicks.</p><p>It's certainly an expensive mouse at $180, but if you're looking for something top-end that feels fantastic for palm gripping, I don't hesitate in recommending it. Assuming the lack of a USB port pans out fine over the long term, this will be my own go-to mouse for gaming in tactical shooters. It's already my go-to for Counter-Strike, and given I'm quite picky over such things, I can't give a much bigger endorsement than that.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/steelseries-rival-pro-gaming-mouse-review/</link>
                                                                            <description>
                            <![CDATA[ SteelSeries is back, baby. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7vw5gjRH4cMUz4DS5Mmzpe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CsuU59BnMsSqEweGvn8jrj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/CsuU59BnMsSqEweGvn8jrj-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Steelseries Rival Pro gaming mouse.]]></media:description>                                                            <media:text><![CDATA[A Steelseries Rival Pro gaming mouse.]]></media:text>
                                <media:title type="plain"><![CDATA[A Steelseries Rival Pro gaming mouse.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CsuU59BnMsSqEweGvn8jrj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="SteelSeries Rival Pro" data-widget-title=""></div><p>This has been quite the year for competitive/esports gaming mice. First we had the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> (and now the <a href="https://www.pcgamer.com/hardware/gaming-mice/sorry-early-adopters-logitech-is-releasing-an-improved-superstrike-making-the-original-all-but-obsolete-just-months-after-launch/" target="_blank">improved X3</a>), then the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. Now, with this Rival Pro, we have SteelSeries finally rejoining the former brands in the sphere of top-tier competitive gaming mice. A true return to form, in my humble opinion.</p><p>What makes for a good competitive gaming mouse? Well, it's often said that 'shape is king', so a comfy shape is certainly an important factor. In addition, you want it to be lightweight, which means no heavier than about 60 g and preferably a fair bit lighter than this. You also, of course, want flawless connectivity, an accurate and reliable sensor, and solid build quality.</p><p>As far as I'm concerned, if all those are implemented correctly, then that's everything you need to land in top-tier territory. But mice can also offer some nice-to-haves such as 8K polling and the ability to adjust things, such as lift-off distance (LOD) or sensor frame rate. They might also have completely new technologies, which is where the Superstrike gets its claim to competitive fame thanks to its inductive technology and rapid trigger clicks. </p><div ><table><caption>Rival Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Buttons</strong></p></td><td  ><p>5</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Ultra-wideband (UWB)</p></td></tr><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>TrueMove 42K Pro</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>SteelSeries Optical</p></td></tr><tr><td class="firstcol " ><p><strong>Feet</strong></p></td><td  ><p>PTFE</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>53 g (+1 g for white ver.)</p></td></tr><tr><td class="firstcol " ><p><strong>Max acceleration</strong></p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Max speed</strong></p></td><td  ><p>800 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8K</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>60 hours per battery</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>None</p></td></tr><tr><td class="firstcol " ><p><strong>Included extras</strong></p></td><td  ><p>2x hot-swappable batteries, battery charger and wireless hub, USB-C to USB-A cable.</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$179.99 / £169.99 / €199.99</p></td></tr></tbody></table></div><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 the comfiest palm grip: </strong>If you like an ergonomic slant to your mouse for a comfy palm grip, alongside the Zowie EC2-DW, the SteelSeries Rival Pro is the best I've tried. The difference being here you're also getting a lighter and more premium-feeling mouse.</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&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You want something tried and tested:</strong> There are some new technologies here (UWB, mixed polling, 'true' 8K) which should, in theory, be better than the norm. However we can't know yet whether they will cause any issues over the long-term given the complete lack of a cable for installing firmware updates, for instance.</p></div></div></div></div><p>This SteelSeries mouse doesn't have anything quite as fancy as haptic-inductive clicks, but that doesn't bar it from being a great competitive mouse, just as surely as it doesn't bar the current <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market, the Viper V4 Pro, from the same accolade. When it comes to all the other areas that make for a great competitive gaming mouse, the Rival Pro is up there with the best of them and is superb for gamers who use a palm grip. And it even has a couple of its own tricks up its sleeve.</p><div><blockquote><p>the most comfortable I've ever felt with a mouse under my hand as a palm gripper</p></blockquote></div><p>The first trick is its 'Infinite Power System', ie, hot-swappable batteries. They're designed well and once you've swapped them a few times to get used to it, you can flip the mouse over and replace it with the backup in the wireless receiver/charger very easily. There's no additional battery inside the mouse itself, so the connection will cut out when you swap, but I've had no problems at all with the mouse turning back on and connecting straight away before it hits the pad again.</p><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="K98GcWdf6pBgkY4vVJPwrj" name="IMG_4076" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/K98GcWdf6pBgkY4vVJPwrj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's necessary that this system work smoothly because SteelSeries has decided to completely remove the option to connect the mouse to your PC with a cable. It's fully wireless with no USB-C port, which is a bold decision, but I'm sure eliminating the internals for a cable also helps keep the mouse light despite its hot-swappable battery system.</p><p>In addition to the batteries, another thing that will presumably help ensure the lack of a cable isn't too much of an issue is that SteelSeries is opting for an ultra-wideband (UWB) rather than a 2.4 GHz connection. This means more bandwidth and less channel interference from other devices, which should, in theory, make for a more reliable connection, and I must say I've had zero issues with the mouse remaining connected and stable after my initial setup. We've seen whispers of other, <a href="https://www.pcgamer.com/hardware/gaming-mice/the-worlds-first-true-8k-ultra-wideband-gaming-mouse-is-here-complete-with-a-glowing-dongle-thats-supposedly-less-prone-to-unwanted-interference/" target="_blank">lesser-known brands opting for UWB connectivity</a>, but it's still very new and niche. </p><p>I naturally feel (as I think others might) a little wary of completely ditching a wired connection. But I suppose that's how many PC gamers felt when mice started going wireless in general, even with the option for a cable. And I must admit, after everything was set up the way I wanted it, my experience with this mouse's UWB connectivity and battery system has been flawless. Perhaps SteelSeries will herald in a new era that sees us cut the cord fully, and eventually we won't worry about it.</p><p>It definitely feels worth it to keep the weight low, and here we come to the nuts and bolts: shape, weight, and build quality. The long and short of it is that this is, I think, the most comfortable I've ever felt with a mouse under my hand as a palm gripper.</p><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="YgXngwCmybbYAKP9YeF2Pj" name="IMG_4064" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/YgXngwCmybbYAKP9YeF2Pj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Previously, my go-to mouse was the <a href="https://www.pcgamer.com/hardware/gaming-mice/zowie-ec2-dw-review/" target="_blank">Zowie EC2-DW</a>, which shares a similar ergonomic shape that's designed for palm grip. Comparing the two, the SteelSeries Rival Pro has a slightly less pronounced left-side slope, leaving me to feel my hand is resting a little flatter than with the Zowie. But it's still curved and ergonomic, and the curves feel, well, curvy, rather than sharp. The whole thing is helped by a nice matte texture to the surface that feels fantastic under the hand.</p><p>I'm not actually sure whether I prefer the shape of the Zowie or the Rival Pro; they both feel very similarly ergonomic and well-suited to a full palm grip for low-sensitivity gameplay in tactical shooters. It's a close call but the SteelSeries mouse is now my go-to, primarily because I prefer its matte coating and because it has the hot-swappable battery system. And because it's lighter.</p><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="JB79msTnMS6qk2KR2Kvtrj" name="IMG_4073" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/JB79msTnMS6qk2KR2Kvtrj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Build quality is fantastic, too. The buttons (including side buttons) feel sturdy and responsive and don't have a hint of pre- or post-travel to them, and try as I might I cannot get a creak out of this thing when I squeeze it. What's especially impressive is that the left and right mouse buttons are optical ones but they feel and sound mechanical rather than loud or hollow which can often happen with optical switches—SteelSeries says it worked closely with the switch manufacturer to achieve this.</p><p>The only problem I have is the scroll wheel action isn't as defined and satisfying as some others—the steps are more defined on the Viper V4 Pro and Superstrike, for instance. Still, it's far from the worst scroll wheel I've felt, and everything else about the mouse feels lovely.</p><p>You also get the option to adjust pretty much anything you might want in the SteelSeries GG software, including sensor rotation, angle snapping, lift-off distance (LOD), and so on. You can also enable 'Max Performance' mode which puts the sensor at the highest frame rate, though this will of course affect battery life.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1332px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="oyhPizXtCCSU6jVbP8c97A" name="image" alt="SteelSeries GG software showing sensor rotation and other options." src="https://cdn.mos.cms.futurecdn.net/oyhPizXtCCSU6jVbP8c97A-1920-80.jpg" mos="" align="middle" fullscreen="" width="1332" height="750" 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>These kinds of options are only available in the local GG software, whereas you can change some of the more basic options in the web software. Oh, did I forget to mention? Yes, this launch also marks the release of the <a href="https://gg.steelseries.com/dashboard" target="_blank">SteelSeries GG web app</a>, so you don't have to install anything locally if you just want to adjust polling rates.</p><p>Another trick to the Rival Pro—adding yet another tool to 2026's quickly-growing arsenal of gaming mouse technologies—is that it has what SteelSeries is keen to point out is "true" 8K polling, in a way that other gaming mice don't. </p><p>SteelSeries claims that other supposedly '8K' mice tend to send 2–8 reports of sensor data in batches for each receipt of transmission, and if any of those is missed due to interference then it's all sent together in a batch again, and this can cause lag or stutter. With this mouse, however, SteelSeries says you get true 8K because it sends one packet and receives one receipt; there's no batching or bunching up of sensor report data.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1297px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="rVcKFuMbB9ko96pzykGu34" name="image (1)" alt="A screenshot of SteelSeries GG software showing dual polling rate options." src="https://cdn.mos.cms.futurecdn.net/rVcKFuMbB9ko96pzykGu34-1920-80.jpg" mos="" align="middle" fullscreen="" width="1297" height="730" 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>SteelSeries has also come up with some new tech for the polling rate which allows you to control the sensor and connection polling rate separately. Enabling 8K polling across the board—the way that other 8K mice implement it—can be very CPU-intensive and actually lower your frame rate, plus of course make your battery run out quicker. </p><p>SteelSeries' solution, to let you set one polling rate for your sensor and another for the UWB connection in general, has the benefit of allowing you ultra-quick and responsive clicks (by enabling 8K UWB) without the performance hit and battery drain of 8K sensor polling. The '8K' is also technically '9K' as it's overclocked, but USB connections can only transmit 8K-worth of data anyway.</p><p>For my part, I'm not too fussed about this. I keep 8K UWB enabled because I haven't found it to cause any performance loss in Counter-Strike nor any significant hit to battery life, and I keep the sensor polling set to 1 kHz or 2 kHz. But I don't notice any difference between my click responsiveness at 8K UWB vs 1K UWB. Your mileage may vary; perhaps some will be able to notice a slight difference, but I don't notice any.</p><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="R7irvhb9doBJtiboDofzqj" name="IMG_4075" alt="A Steelseries Rival Pro gaming mouse." src="https://cdn.mos.cms.futurecdn.net/R7irvhb9doBJtiboDofzqj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Moreover, for competitive gaming it's arguably the sensor's rate that you want high anyway, and you can't select high sensor polling alongside low click polling—plus doing so likely wouldn't save much battery life anyway. Still, for anyone who wants to eke every bit of responsiveness possible out of their mouse, these new polling rate technologies are useful additions.</p><p>My time with the mouse has been smooth sailing. Smoother than smooth, in fact, given how easy the 'infinite' battery system is to use. I especially like that the little LED on the charging/connection hub can be set to show how charged your mouse is, so you don't have to be unsure when that red 'low battery' light will pop up. </p><p>Alternatively, you can set it to show you which (polling) performance mode you're in. And don't worry about being able to tell which DPI mode you're in, because when you change DPI with the underside button, a little LED on the side of your mouse lights up with the corresponding DPI level colour.</p><p>You also shouldn't worry about your batteries dying, as SteelSeries says you'll be able to buy replacement ones. So, it seems all bases are covered.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jTHKtqUSny7JDsP6ENXtsj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SL5r5eMcdzYG4yPhFm9brj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XctssEFtcNfwHWVGFXn3sj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d4HgWCBNQ3AhHSxwz42Prj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hh3EQnxoMNY4x4HoHV92sj-1920-80.jpg" alt="A Steelseries Rival Pro gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I'm happy with the choices SteelSeries has made here. I don't think the new technologies will be as game-changing as <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">Razer's FrameSync</a> or Logitech's HITS system, but a great hot-swappable battery system and UWB connectivity aren't anything to turn our noses up at. I just hope the complete lack of USB connectivity doesn't prove to be a problem in the long run.</p><p>Above all, I'm excited by SteelSeries' return to form in the competitive gaming mouse scene, to the extent that this mouse feels <em>almost</em> as premium as the most perfectly crafted mouse I've ever used, the Viper V4 Pro. The only thing that sets the latter apart is its scroll wheel and its inclusion of a USB port. And in fact I think the SteelSeries mouse actually has the Razer one beat when it comes to clicks, thanks to it having optical ones that sound and feel mechanical, compared to Razer's incredibly loud clicks.</p><p>It's certainly an expensive mouse at $180, but if you're looking for something top-end that feels fantastic for palm gripping, I don't hesitate in recommending it. Assuming the lack of a USB port pans out fine over the long term, this will be my own go-to mouse for gaming in tactical shooters. It's already my go-to for Counter-Strike, and given I'm quite picky over such things, I can't give a much bigger endorsement than that.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ October Prime Day gaming mouse deals ]]></title>
                                                                                                <dc:content><![CDATA[ <p>To paraphrase Wang Chung, we are in our Big Deal Days, love. With prices going crazy on PCs and laptops, because of the price of memory and GPUs, peripherals are one place where there should be good discounts, so we're hoping for some good Prime Day gaming mice deals this season. Amazon's October Prime Day is rolling around next week, with the event starting on Tuesday and running through until the end of play Wednesday. As always, however, every other retailer is jumping on the discounts bandwagon and timing a sale to coincide with Mr. Bezos' own event.</p><p>👉<a href="https://www.amazon.com/s?k=gaming+mice&crid=2J6G5VPFKFEZ6&sprefix=gaming+mice%2Caps%2C210&ref=nb_sb_noss_1" target="_blank"><strong>ALL of Amazon's gaming mice deals</strong></a>👈<br><strong>👉</strong><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>OUR favorite Prime Day PC gaming deals</strong></a><strong>👈</strong></p><p>We're PC gamers, so the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a> are our bread and butter, we spend a lot of time through the year testing the latest mice and the latest tech, so check out our guide to get an idea of what might be the right one for you. In the meantime, though, there are still plenty of tempting options below.</p><section class="article__schema-question"><h3>When is October Prime Day 2026?</h3><article class="article__schema-answer"><p>Amazon's October Prime Day, AKA Big Deal Days, starts on <strong>October 6</strong>, and runs though until the end of <strong>October 7</strong>. The deals are rolling in before then, though, and will be spread out across various retailers following Amazon's lead.</p></article></section><h2 id="where-to-find-the-best-prime-day-gaming-mice-deals">Where to find the best Prime Day gaming mice deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=gaming+mice&crid=2J6G5VPFKFEZ6&sprefix=gaming+mice%2Caps%2C210&ref=nb_sb_noss_1" target="_blank"><strong>All the gaming mice you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=gaming+mice" target="_blank">Speedy gaming mice, superb savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?id=pcat17071&st=gaming%20mice" target="_blank">Big name meeces with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/Gaming-Mouse/SubCategory/ID-3527?cm_sp=Cat_Keyboard-Mice_3-_-VisNav-_-Gaming-Mice" target="_blank">Big savings on big brand gaming mice</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-1bec2uw *:not(svg):not(path) { box-sizing: border-box; }    #widget-1bec2uw h1, #widget-1bec2uw p, #widget-1bec2uw h3 { margin: 0; line-height: normal; }    body { margin: 0; background: transparent; font-family: ui-sans-serif, system-ui, sans-serif; }  @supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))) {  *, ::before, ::after, ::backdrop { --tw-translate-x: 0; --tw-translate-y: 0; --tw-translate-z: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scale-z: 1; --tw-rotate-x: initial; --tw-rotate-y: initial; --tw-rotate-z: initial; --tw-skew-x: initial; --tw-skew-y: initial; --tw-scroll-snap-strictness: proximity; --tw-space-y-reverse: 0; --tw-space-x-reverse: 0; --tw-divide-y-reverse: 0; --tw-border-style: solid; --tw-gradient-position: initial; --tw-gradient-from: #0000; --tw-gradient-via: #0000; --tw-gradient-to: #0000; --tw-gradient-stops: initial; --tw-gradient-via-stops: initial; --tw-gradient-from-position: 0%; --tw-gradient-via-position: 50%; --tw-gradient-to-position: 100%; --tw-leading: initial; --tw-font-weight: initial; --tw-tracking: initial; --tw-ordinal: initial; --tw-slashed-zero: initial; --tw-numeric-figure: initial; --tw-numeric-spacing: initial; --tw-numeric-fraction: initial; --tw-shadow: 0 0 #0000; --tw-shadow-color: initial; --tw-shadow-alpha: 100%; --tw-inset-shadow: 0 0 #0000; --tw-inset-shadow-color: initial; --tw-inset-shadow-alpha: 100%; --tw-ring-color: initial; --tw-ring-shadow: 0 0 #0000; --tw-inset-ring-color: initial; --tw-inset-ring-shadow: 0 0 #0000; --tw-ring-inset: initial; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-outline-style: solid; --tw-blur: initial; --tw-brightness: initial; --tw-contrast: initial; --tw-grayscale: initial; --tw-hue-rotate: initial; --tw-invert: initial; --tw-opacity: initial; --tw-saturate: initial; --tw-sepia: initial; --tw-drop-shadow: initial; --tw-drop-shadow-color: initial; --tw-drop-shadow-alpha: 100%; --tw-drop-shadow-size: initial; --tw-backdrop-blur: initial; --tw-backdrop-brightness: initial; --tw-backdrop-contrast: initial; --tw-backdrop-grayscale: initial; --tw-backdrop-hue-rotate: initial; --tw-backdrop-invert: initial; --tw-backdrop-opacity: initial; --tw-backdrop-saturate: initial; --tw-backdrop-sepia: initial; --tw-duration: initial; --tw-ease: initial; }}#widget-1bec2uw, :host { --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --color-red-50: oklch(97.1% .013 17.38); --color-red-100: oklch(93.6% .032 17.717); --color-red-400: oklch(70.4% .191 22.216); --color-red-500: oklch(63.7% .237 25.331); --color-red-600: oklch(57.7% .245 27.325); --color-red-700: oklch(50.5% .213 27.518); --color-orange-50: oklch(98% .016 73.684); --color-orange-600: oklch(64.6% .222 41.116); --color-orange-700: oklch(55.3% .195 38.402); --color-amber-50: oklch(98.7% .022 95.277); --color-amber-600: oklch(66.6% .179 58.318); --color-amber-700: oklch(55.5% .163 48.998); --color-yellow-50: oklch(98.7% .026 102.212); --color-yellow-300: oklch(90.5% .182 98.111); --color-yellow-500: oklch(79.5% .184 86.047); --color-yellow-600: oklch(68.1% .162 75.834); --color-yellow-700: oklch(55.4% .135 66.442); --color-yellow-800: oklch(47.6% .114 61.907); --color-lime-700: oklch(53.2% .157 131.589); --color-green-50: oklch(98.2% .018 155.826); --color-green-100: oklch(96.2% .044 156.743); --color-green-400: oklch(79.2% .209 151.711); --color-green-500: oklch(72.3% .219 149.579); --color-green-600: oklch(62.7% .194 149.214); --color-green-700: oklch(52.7% .154 150.069); --color-teal-50: oklch(98.4% .014 180.72); --color-teal-600: oklch(60% .118 184.704); --color-teal-700: oklch(51.1% .096 186.391); --color-blue-50: oklch(97% .014 254.604); --color-blue-500: oklch(62.3% .214 259.815); --color-blue-600: oklch(54.6% .245 262.881); --color-blue-700: oklch(48.8% .243 264.376); --color-indigo-50: oklch(96.2% .018 272.314); --color-indigo-600: oklch(51.1% .262 276.966); --color-purple-50: oklch(97.7% .014 308.299); --color-purple-400: oklch(71.4% .203 305.504); --color-purple-600: oklch(55.8% .288 302.321); --color-purple-700: oklch(49.6% .265 301.924); --color-pink-600: oklch(59.2% .249 .584); --color-rose-50: oklch(96.9% .015 12.422); --color-rose-100: oklch(94.1% .03 12.58); --color-rose-500: oklch(64.5% .246 16.439); --color-rose-600: oklch(58.6% .253 17.585); --color-slate-50: oklch(98.4% .003 247.858); --color-slate-400: oklch(70.4% .04 256.788); --color-slate-500: oklch(55.4% .046 257.417); --color-slate-600: oklch(44.6% .043 257.281); --color-slate-900: oklch(20.8% .042 265.755); --color-gray-50: oklch(98.5% .002 247.839); --color-gray-100: oklch(96.7% .003 264.542); --color-gray-200: oklch(92.8% .006 264.531); --color-gray-300: oklch(87.2% .01 258.338); --color-gray-400: oklch(70.7% .022 261.325); --color-gray-500: oklch(55.1% .027 264.364); --color-gray-600: oklch(44.6% .03 256.802); --color-gray-700: oklch(37.3% .034 259.733); --color-gray-800: oklch(27.8% .033 256.848); --color-gray-900: oklch(21% .034 264.665); --color-gray-950: oklch(13% .028 261.692); --color-zinc-300: oklch(87.1% .006 286.286); --color-zinc-800: oklch(27.4% .006 286.033); --color-zinc-900: oklch(21% .006 285.885); --color-neutral-50: oklch(98.5% 0 0); --color-neutral-100: oklch(97% 0 0); --color-neutral-200: oklch(92.2% 0 0); --color-neutral-300: oklch(87% 0 0); --color-neutral-400: oklch(70.8% 0 0); --color-neutral-500: oklch(55.6% 0 0); --color-neutral-600: oklch(43.9% 0 0); --color-neutral-700: oklch(37.1% 0 0); --color-neutral-800: oklch(26.9% 0 0); --color-neutral-900: oklch(20.5% 0 0); --color-neutral-950: oklch(14.5% 0 0); --color-black: #000; --color-white: #fff; --spacing: 4px; --breakpoint-xl: 1280px; --container-sm: 384px; --container-md: 448px; --container-lg: 512px; --container-xl: 576px; --container-2xl: 672px; --container-4xl: 896px; --container-6xl: 1152px; --container-7xl: 1280px; --text-xs: 12px; --text-xs--line-height: calc(1 / .75); --text-sm: 14px; --text-sm--line-height: calc(1.25 / .875); --text-base: 16px; --text-base--line-height: 1.5; --text-lg: 18px; --text-lg--line-height: calc(1.75 / 1.125); --text-xl: 20px; --text-xl--line-height: calc(1.75 / 1.25); --text-2xl: 24px; --text-2xl--line-height: calc(2 / 1.5); --text-3xl: 30px; --text-3xl--line-height: 1.2; --text-4xl: 36px; --text-4xl--line-height: calc(2.5 / 2.25); --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; --font-weight-black: 900; --tracking-tight: -.025em; --tracking-normal: 0em; --tracking-wide: .025em; --tracking-wider: .05em; --tracking-widest: .1em; --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --radius-xs: 2px; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius-xl: 12px; --radius-2xl: 16px; --radius-3xl: 24px; --radius-4xl: 32px; --ease-in: cubic-bezier(.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, .2, 1); --ease-in-out: cubic-bezier(.4, 0, .2, 1); --animate-spin: spin 1s linear infinite; --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; --blur-sm: 8px; --default-transition-duration: .15s; --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-font-family: var(--font-sans); --default-mono-font-family: var(--font-mono); }*, ::after, ::before, ::backdrop { box-sizing: border-box; border: 0px solid; margin: 0px; padding: 0px; }::file-selector-button { box-sizing: border-box; border: 0px solid; margin: 0px; padding: 0px; }html, :host { text-size-adjust: 100%; tab-size: 4; line-height: 1.5; font-family: var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); font-feature-settings: var(--default-font-feature-settings,normal); font-variation-settings: var(--default-font-variation-settings,normal); -webkit-tap-highlight-color: transparent; }hr { height: 0px; color: inherit; border-top-width: 1px; }abbr:where([title]) { text-decoration: underline dotted; }h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; }a { color: inherit; text-decoration: inherit; }b, strong { font-weight: bolder; }code, kbd, samp, pre { font-family: var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); font-feature-settings: var(--default-mono-font-feature-settings,normal); font-variation-settings: var(--default-mono-font-variation-settings,normal); font-size: 1em; }small { font-size: 80%; }sub, sup { vertical-align: baseline; font-size: 75%; line-height: 0; position: relative; }sub { bottom: -0.25em; }sup { top: -0.5em; }table { text-indent: 0px; border-color: inherit; border-collapse: collapse; }progress { vertical-align: baseline; }summary { display: list-item; }ol, ul, menu { list-style: none; }img, svg, video, canvas, audio, iframe, embed, object { vertical-align: middle; display: block; }img, video { max-width: 100%; height: auto; }button, input, select, optgroup, textarea { font: inherit; letter-spacing: inherit; color: inherit; opacity: 1; background-color: rgba(0, 0, 0, 0); border-radius: 0px; }::file-selector-button { font: inherit; letter-spacing: inherit; color: inherit; opacity: 1; background-color: rgba(0, 0, 0, 0); border-radius: 0px; }:where(select:is([multiple], [size])) optgroup { font-weight: bolder; }:where(select:is([multiple], [size])) optgroup option { padding-inline-start: 20px; }::file-selector-button { margin-inline-end: 4px; }::placeholder { opacity: 1; }@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px) {  ::placeholder { color: currentcolor; }  @supports (color:color-mix(in lab,red,red)) {  ::placeholder { color: color-mix(currentcolor, transparent); }}}textarea { resize: vertical; }::-webkit-search-decoration { appearance: none; }::-webkit-date-and-time-value { min-height: 1lh; text-align: inherit; }::-webkit-datetime-edit { display: inline-flex; }::-webkit-datetime-edit-fields-wrapper { padding: 0px; }::-webkit-datetime-edit { padding-block: 0px; }::-webkit-datetime-edit-year-field { padding-block: 0px; }::-webkit-datetime-edit-month-field { padding-block: 0px; }::-webkit-datetime-edit-day-field { padding-block: 0px; }::-webkit-datetime-edit-hour-field { padding-block: 0px; }::-webkit-datetime-edit-minute-field { padding-block: 0px; }::-webkit-datetime-edit-second-field { padding-block: 0px; }::-webkit-datetime-edit-millisecond-field { padding-block: 0px; }::-webkit-datetime-edit-meridiem-field { padding-block: 0px; }::-webkit-calendar-picker-indicator { line-height: 1; }button, input:where([type="button"], [type="reset"], [type="submit"]) { appearance: button; }::file-selector-button { appearance: button; }::-webkit-inner-spin-button { height: auto; }::-webkit-outer-spin-button { height: auto; }[hidden]:where(:not([hidden="until-found"])) { display: none !important; }@layer components;.\@container { container-type: inline-size; }.pointer-events-auto { pointer-events: auto; }.pointer-events-none { pointer-events: none; }.collapse { visibility: collapse; }.invisible { visibility: hidden; }.visible { visibility: visible; }.sr-only { clip-path: inset(50%); white-space: nowrap; border-width: 0px; width: 1px; height: 1px; margin: -1px; padding: 0px; position: absolute; overflow: hidden; }.absolute { position: absolute; }.fixed { position: fixed; }.relative { position: relative; }.static { position: static; }.sticky { position: sticky; }.inset-0 { inset: calc(var(--spacing) * 0); }.top-0 { top: calc(var(--spacing) * 0); }.top-1 { top: calc(var(--spacing) * 1); }.top-1\/2 { top: 50%; }.top-3 { top: calc(var(--spacing) * 3); }.top-4 { top: calc(var(--spacing) * 4); }.top-\[76px\] { top: 76px; }.top-\[80px\] { top: 80px; }.top-auto { top: auto; }.top-full { top: 100%; }.-right-0, .right-0 { right: calc(var(--spacing) * 0); }.right-1 { right: calc(var(--spacing) * 1); }.right-2 { right: calc(var(--spacing) * 2); }.right-3 { right: calc(var(--spacing) * 3); }.right-4 { right: calc(var(--spacing) * 4); }.right-full { right: 100%; }.-bottom-0, .bottom-0 { bottom: calc(var(--spacing) * 0); }.bottom-3 { bottom: calc(var(--spacing) * 3); }.bottom-4 { bottom: calc(var(--spacing) * 4); }.bottom-full { bottom: 100%; }.-left-2 { left: calc(var(--spacing) * -2); }.left-0 { left: calc(var(--spacing) * 0); }.left-1 { left: calc(var(--spacing) * 1); }.left-1\/2 { left: 50%; }.left-2 { left: calc(var(--spacing) * 2); }.left-3 { left: calc(var(--spacing) * 3); }.left-4 { left: calc(var(--spacing) * 4); }.left-auto { left: auto; }.left-full { left: 100%; }.isolate { isolation: isolate; }.z-10 { z-index: 10; }.z-20 { z-index: 20; }.z-50 { z-index: 50; }.z-\[60\] { z-index: 60; }.z-\[99\] { z-index: 99; }.z-\[100\] { z-index: 100; }.z-\[9999\] { z-index: 9999; }.z-\[10000\] { z-index: 10000; }.z-\[10001\] { z-index: 10001; }.z-\[var\(--burger-btn-z-index\,1\)\] { z-index: var(--burger-btn-z-index,1); }.order-first { order: -9999; }.col-span-2 { grid-column: span 2 / span 2; }.col-span-3 { grid-column: span 3 / span 3; }.col-span-7 { grid-column: span 7 / span 7; }.col-span-10 { grid-column: span 10 / span 10; }.row-3 { grid-row: 3; }.row-4 { grid-row: 4; }.float-end { float: inline-end; }.float-left { float: left; }.float-start { float: inline-start; }.clear-both { clear: both; }.clear-left { clear: left; }.container { width: 100%; }@media (min-width: 640px) {  .container { max-width: 640px; }}@media (min-width: 768px) {  .container { max-width: 768px; }}@media (min-width: 1024px) {  .container { max-width: 1024px; }}@media (min-width: 1280px) {  .container { max-width: 1280px; }}@media (min-width: 1536px) {  .container { max-width: 1536px; }}.m-0 { margin: calc(var(--spacing) * 0); }.m-1 { margin: calc(var(--spacing) * 1); }.m-4 { margin: calc(var(--spacing) * 4); }.m-auto { margin: auto; }.-mx-4 { margin-inline: calc(var(--spacing) * -4); }.mx-0 { margin-inline: calc(var(--spacing) * 0); }.mx-1 { margin-inline: calc(var(--spacing) * 1); }.mx-2 { margin-inline: calc(var(--spacing) * 2); }.mx-4 { margin-inline: calc(var(--spacing) * 4); }.mx-auto { margin-inline: auto; }.-my-2 { margin-block: calc(var(--spacing) * -2); }.my-0 { margin-block: calc(var(--spacing) * 0); }.my-1 { margin-block: calc(var(--spacing) * 1); }.my-2 { margin-block: calc(var(--spacing) * 2); }.my-3 { margin-block: calc(var(--spacing) * 3); }.my-4 { margin-block: calc(var(--spacing) * 4); }.my-5 { margin-block: calc(var(--spacing) * 5); }.my-6 { margin-block: calc(var(--spacing) * 6); }.my-7 { margin-block: calc(var(--spacing) * 7); }.my-8 { margin-block: calc(var(--spacing) * 8); }.my-10 { margin-block: calc(var(--spacing) * 10); }.my-auto { margin-block: auto; }.ms-4 { margin-inline-start: calc(var(--spacing) * 4); }.me-2 { margin-inline-end: calc(var(--spacing) * 2); }.prose { color: var(--tw-prose-#widget-1bec2uw); max-width: 65ch; }.prose :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; }.prose :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-lead); margin-top: 1.2em; margin-bottom: 1.2em; font-size: 1.25em; line-height: 1.6; }.prose :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-links); font-weight: 500; text-decoration: underline; }.prose :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-bold); font-weight: 600; }.prose :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }.prose :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; list-style-type: decimal; }.prose :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-alpha; }.prose :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-alpha; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-alpha; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-alpha; }.prose :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-roman; }.prose :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-roman; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-roman; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-roman; }.prose :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: decimal; }.prose :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; list-style-type: disc; }.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { color: var(--tw-prose-counters); font-weight: 400; }.prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { color: var(--tw-prose-bullets); }.prose :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 1.25em; font-weight: 600; }.prose :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-color: var(--tw-prose-hr); border-top-width: 1px; margin-top: 3em; margin-bottom: 3em; }.prose :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-quotes); border-inline-start-width: 4px; border-inline-start-color: var(--tw-prose-quote-borders); quotes: "“" "”" "‘" "’"; margin-top: 1.6em; margin-bottom: 1.6em; padding-inline-start: 1em; font-style: italic; font-weight: 500; }.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { content: open-quote; }.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: close-quote; }.prose :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 0px; margin-bottom: 0.888889em; font-size: 2.25em; font-weight: 800; line-height: 1.11111; }.prose :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 900; }.prose :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 2em; margin-bottom: 1em; font-size: 1.5em; font-weight: 700; line-height: 1.33333; }.prose :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 800; }.prose :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 1.6em; margin-bottom: 0.6em; font-size: 1.25em; font-weight: 600; line-height: 1.6; }.prose :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 700; }.prose :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 1.5em; margin-bottom: 0.5em; font-weight: 600; line-height: 1.5; }.prose :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 700; }.prose :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }.prose :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; display: block; }.prose :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }.prose :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-kbd); box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows); padding-top: 0.1875em; padding-inline: 0.375em; padding-bottom: 0.1875em; border-radius: 5px; font-family: inherit; font-size: 0.875em; font-weight: 500; }.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-code); font-size: 0.875em; font-weight: 600; }.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before, .prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: "`"; }.prose :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }.prose :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-size: 0.875em; }.prose :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-size: 0.9em; }.prose :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }.prose :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-pre-code); background-color: var(--tw-prose-pre-bg); padding-top: 0.857143em; padding-inline: 1.14286em; padding-bottom: 0.857143em; border-radius: 6px; margin-top: 1.71429em; margin-bottom: 1.71429em; font-size: 0.875em; font-weight: 400; line-height: 1.71429; overflow-x: auto; }.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: inherit; color: inherit; font-size: inherit; font-family: inherit; line-height: inherit; background-color: rgba(0, 0, 0, 0); border-width: 0px; border-radius: 0px; padding: 0px; }.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before, .prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: none; }.prose :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { table-layout: auto; width: 100%; margin-top: 2em; margin-bottom: 2em; font-size: 0.875em; line-height: 1.71429; }.prose :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-th-borders); }.prose :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); vertical-align: bottom; padding-inline: 0.571429em; padding-bottom: 0.571429em; font-weight: 600; }.prose :where(t#widget-1bec2uw tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-td-borders); }.prose :where(t#widget-1bec2uw tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-1bec2uw td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { vertical-align: baseline; }.prose :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-top-width: 1px; border-top-color: var(--tw-prose-th-borders); }.prose :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { vertical-align: top; }.prose :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { text-align: start; }.prose :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-captions); margin-top: 0.857143em; font-size: 0.875em; line-height: 1.42857; }.prose { --tw-prose-#widget-1bec2uw: oklch(37.3% .034 259.733); --tw-prose-headings: oklch(21% .034 264.665); --tw-prose-lead: oklch(44.6% .03 256.802); --tw-prose-links: oklch(21% .034 264.665); --tw-prose-bold: oklch(21% .034 264.665); --tw-prose-counters: oklch(55.1% .027 264.364); --tw-prose-bullets: oklch(87.2% .01 258.338); --tw-prose-hr: oklch(92.8% .006 264.531); --tw-prose-quotes: oklch(21% .034 264.665); --tw-prose-quote-borders: oklch(92.8% .006 264.531); --tw-prose-captions: oklch(55.1% .027 264.364); --tw-prose-kbd: oklch(21% .034 264.665); --tw-prose-kbd-shadows: oklab(21% -.00316127 -.0338527/.1); --tw-prose-code: oklch(21% .034 264.665); --tw-prose-pre-code: oklch(92.8% .006 264.531); --tw-prose-pre-bg: oklch(27.8% .033 256.848); --tw-prose-th-borders: oklch(87.2% .01 258.338); --tw-prose-td-borders: oklch(92.8% .006 264.531); --tw-prose-invert-#widget-1bec2uw: oklch(87.2% .01 258.338); --tw-prose-invert-headings: #fff; --tw-prose-invert-lead: oklch(70.7% .022 261.325); --tw-prose-invert-links: #fff; --tw-prose-invert-bold: #fff; --tw-prose-invert-counters: oklch(70.7% .022 261.325); --tw-prose-invert-bullets: oklch(44.6% .03 256.802); --tw-prose-invert-hr: oklch(37.3% .034 259.733); --tw-prose-invert-quotes: oklch(96.7% .003 264.542); --tw-prose-invert-quote-borders: oklch(37.3% .034 259.733); --tw-prose-invert-captions: oklch(70.7% .022 261.325); --tw-prose-invert-kbd: #fff; --tw-prose-invert-kbd-shadows: #ffffff1a; --tw-prose-invert-code: #fff; --tw-prose-invert-pre-code: oklch(87.2% .01 258.338); --tw-prose-invert-pre-bg: #00000080; --tw-prose-invert-th-borders: oklch(44.6% .03 256.802); --tw-prose-invert-td-borders: oklch(37.3% .034 259.733); font-size: 16px; line-height: 1.75; }.prose :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.5em; margin-bottom: 0.5em; }.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0.375em; }.prose :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; }.prose :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; }.prose :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.25em; }.prose :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; }.prose :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.25em; }.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; }.prose :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; }.prose :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.5em; padding-inline-start: 1.625em; }.prose :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose :where(t#widget-1bec2uw td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 0.571429em; padding-inline: 0.571429em; padding-bottom: 0.571429em; }.prose :where(t#widget-1bec2uw td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-1bec2uw td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }.prose :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 0px; }.prose-lg { font-size: 18px; line-height: 1.77778; }.prose-lg :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; margin-bottom: 1.33333em; }.prose-lg :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.09091em; margin-bottom: 1.09091em; font-size: 1.22222em; line-height: 1.45455; }.prose-lg :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.66667em; margin-bottom: 1.66667em; padding-inline-start: 1em; }.prose-lg :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0.833333em; font-size: 2.66667em; line-height: 1; }.prose-lg :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.86667em; margin-bottom: 1.06667em; font-size: 1.66667em; line-height: 1.33333; }.prose-lg :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.66667em; margin-bottom: 0.666667em; font-size: 1.33333em; line-height: 1.5; }.prose-lg :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 0.444444em; line-height: 1.55556; }.prose-lg :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 1.77778em; }.prose-lg :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose-lg :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 1.77778em; }.prose-lg :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 0.222222em; padding-inline: 0.444444em; padding-bottom: 0.222222em; border-radius: 5px; font-size: 0.888889em; }.prose-lg :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.888889em; }.prose-lg :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.866667em; }.prose-lg :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.875em; }.prose-lg :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 1em; padding-inline: 1.5em; padding-bottom: 1em; border-radius: 6px; margin-top: 2em; margin-bottom: 2em; font-size: 0.888889em; line-height: 1.75; }.prose-lg :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; margin-bottom: 1.33333em; padding-inline-start: 1.55556em; }.prose-lg :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.666667em; margin-bottom: 0.666667em; }.prose-lg :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0.444444em; }.prose-lg :where(.prose-lg > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.888889em; margin-bottom: 0.888889em; }.prose-lg :where(.prose-lg > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; }.prose-lg :where(.prose-lg > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.33333em; }.prose-lg :where(.prose-lg > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; }.prose-lg :where(.prose-lg > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.33333em; }.prose-lg :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.888889em; margin-bottom: 0.888889em; }.prose-lg :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; margin-bottom: 1.33333em; }.prose-lg :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; }.prose-lg :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.666667em; padding-inline-start: 1.55556em; }.prose-lg :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 3.11111em; margin-bottom: 3.11111em; }.prose-lg :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose-lg :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.888889em; line-height: 1.5; }.prose-lg :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline: 0.75em; padding-bottom: 0.75em; }.prose-lg :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose-lg :where(t#widget-1bec2uw td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 0.75em; padding-inline: 0.75em; padding-bottom: 0.75em; }.prose-lg :where(t#widget-1bec2uw td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-1bec2uw td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose-lg :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 1.77778em; }.prose-lg :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose-lg :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1em; font-size: 0.888889em; line-height: 1.5; }.prose-lg :where(.prose-lg > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose-lg :where(.prose-lg > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 0px; }.mt-0 { margin-top: calc(var(--spacing) * 0); }.mt-1 { margin-top: calc(var(--spacing) * 1); }.mt-2 { margin-top: calc(var(--spacing) * 2); }.mt-3 { margin-top: calc(var(--spacing) * 3); }.mt-4 { margin-top: calc(var(--spacing) * 4); }.mt-5 { margin-top: calc(var(--spacing) * 5); }.mt-6 { margin-top: calc(var(--spacing) * 6); }.mt-7 { margin-top: calc(var(--spacing) * 7); }.mt-8 { margin-top: calc(var(--spacing) * 8); }.mt-10 { margin-top: calc(var(--spacing) * 10); }.mt-auto { margin-top: auto; }.-mr-1 { margin-right: calc(var(--spacing) * -1); }.mr-0 { margin-right: calc(var(--spacing) * 0); }.mr-1 { margin-right: calc(var(--spacing) * 1); }.mr-1\.5 { margin-right: calc(var(--spacing) * 1.5); }.mr-2 { margin-right: calc(var(--spacing) * 2); }.mr-3 { margin-right: calc(var(--spacing) * 3); }.mr-4 { margin-right: calc(var(--spacing) * 4); }.mr-5 { margin-right: calc(var(--spacing) * 5); }.mr-8 { margin-right: calc(var(--spacing) * 8); }.mr-auto { margin-right: auto; }.mb-0 { margin-bottom: calc(var(--spacing) * 0); }.mb-1 { margin-bottom: calc(var(--spacing) * 1); }.mb-2 { margin-bottom: calc(var(--spacing) * 2); }.mb-3 { margin-bottom: calc(var(--spacing) * 3); }.mb-4 { margin-bottom: calc(var(--spacing) * 4); }.mb-5 { margin-bottom: calc(var(--spacing) * 5); }.mb-6 { margin-bottom: calc(var(--spacing) * 6); }.mb-7 { margin-bottom: calc(var(--spacing) * 7); }.mb-8 { margin-bottom: calc(var(--spacing) * 8); }.mb-10 { margin-bottom: calc(var(--spacing) * 10); }.-ml-1 { margin-left: calc(var(--spacing) * -1); }.-ml-2 { margin-left: calc(var(--spacing) * -2); }.-ml-5 { margin-left: calc(var(--spacing) * -5); }.ml-0 { margin-left: calc(var(--spacing) * 0); }.ml-0\.5 { margin-left: calc(var(--spacing) * .5); }.ml-1 { margin-left: calc(var(--spacing) * 1); }.ml-2 { margin-left: calc(var(--spacing) * 2); }.ml-3 { margin-left: calc(var(--spacing) * 3); }.ml-4 { margin-left: calc(var(--spacing) * 4); }.ml-6 { margin-left: calc(var(--spacing) * 6); }.ml-8 { margin-left: calc(var(--spacing) * 8); }.ml-auto { margin-left: auto; }.box-border { box-sizing: border-box; }.line-clamp-2 { -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; }.line-clamp-3 { -webkit-line-clamp: 3; -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; }.block { display: block; }.contents { display: contents; }.flex { display: flex; }.flow-root { display: flow-root; }.grid { display: grid; }.hidden { display: none; }.inline { display: inline; }.inline-block { display: inline-block; }.inline-flex { display: inline-flex; }.table { display: table; }.table-row { display: table-row; }.aspect-square { aspect-ratio: 1 / 1; }.size-1 { width: calc(var(--spacing) * 1); height: calc(var(--spacing) * 1); }.size-1\.5 { width: calc(var(--spacing) * 1.5); height: calc(var(--spacing) * 1.5); }.size-2 { width: calc(var(--spacing) * 2); height: calc(var(--spacing) * 2); }.size-3 { width: calc(var(--spacing) * 3); height: calc(var(--spacing) * 3); }.size-4 { width: calc(var(--spacing) * 4); height: calc(var(--spacing) * 4); }.size-5 { width: calc(var(--spacing) * 5); height: calc(var(--spacing) * 5); }.size-6 { width: calc(var(--spacing) * 6); height: calc(var(--spacing) * 6); }.size-7 { width: calc(var(--spacing) * 7); height: calc(var(--spacing) * 7); }.size-8 { width: calc(var(--spacing) * 8); height: calc(var(--spacing) * 8); }.size-9 { width: calc(var(--spacing) * 9); height: calc(var(--spacing) * 9); }.size-10 { width: calc(var(--spacing) * 10); height: calc(var(--spacing) * 10); }.size-12 { width: calc(var(--spacing) * 12); height: calc(var(--spacing) * 12); }.size-16 { width: calc(var(--spacing) * 16); height: calc(var(--spacing) * 16); }.size-20 { width: calc(var(--spacing) * 20); height: calc(var(--spacing) * 20); }.size-40 { width: calc(var(--spacing) * 40); height: calc(var(--spacing) * 40); }.size-full { width: 100%; height: 100%; }.h-1 { height: calc(var(--spacing) * 1); }.h-1\.5 { height: calc(var(--spacing) * 1.5); }.h-2 { height: calc(var(--spacing) * 2); }.h-3 { height: calc(var(--spacing) * 3); }.h-4 { height: calc(var(--spacing) * 4); }.h-5 { height: calc(var(--spacing) * 5); }.h-6 { height: calc(var(--spacing) * 6); }.h-7 { height: calc(var(--spacing) * 7); }.h-8 { height: calc(var(--spacing) * 8); }.h-9 { height: calc(var(--spacing) * 9); }.h-10 { height: calc(var(--spacing) * 10); }.h-12 { height: calc(var(--spacing) * 12); }.h-14 { height: calc(var(--spacing) * 14); }.h-16 { height: calc(var(--spacing) * 16); }.h-20 { height: calc(var(--spacing) * 20); }.h-24 { height: calc(var(--spacing) * 24); }.h-28 { height: calc(var(--spacing) * 28); }.h-64 { height: calc(var(--spacing) * 64); }.h-\[30px\] { height: 30px; }.h-\[40px\] { height: 40px; }.h-\[44px\] { height: 44px; }.h-\[76px\] { height: 76px; }.h-\[600px\] { height: 600px; }.h-\[var\(--logo-height-mobile\,25px\)\] { height: var(--logo-height-mobile,25px); }.h-\[var\(--site-header-height\,60px\)\] { height: var(--site-header-height,60px); }.h-auto { height: auto; }.h-fit { height: fit-content; }.h-full { height: 100%; }.h-min { height: min-content; }.h-px { height: 1px; }.h-screen { height: 100vh; }.max-h-0 { max-height: calc(var(--spacing) * 0); }.max-h-6 { max-height: calc(var(--spacing) * 6); }.max-h-12 { max-height: calc(var(--spacing) * 12); }.max-h-32 { max-height: calc(var(--spacing) * 32); }.max-h-80 { max-height: calc(var(--spacing) * 80); }.max-h-\[90vh\] { max-height: 90vh; }.max-h-\[var\(--logo-height-mobile\,25px\)\] { max-height: var(--logo-height-mobile,25px); }.min-h-8 { min-height: calc(var(--spacing) * 8); }.min-h-10 { min-height: calc(var(--spacing) * 10); }.min-h-\[400px\] { min-height: 400px; }.min-h-full { min-height: 100%; }.min-h-screen { min-height: 100vh; }.w-0 { width: calc(var(--spacing) * 0); }.w-1 { width: calc(var(--spacing) * 1); }.w-1\.5 { width: calc(var(--spacing) * 1.5); }.w-1\/3 { width: 33.3333%; }.w-1\/4 { width: 25%; }.w-2 { width: calc(var(--spacing) * 2); }.w-3 { width: calc(var(--spacing) * 3); }.w-4 { width: calc(var(--spacing) * 4); }.w-5 { width: calc(var(--spacing) * 5); }.w-6 { width: calc(var(--spacing) * 6); }.w-8 { width: calc(var(--spacing) * 8); }.w-9 { width: calc(var(--spacing) * 9); }.w-10 { width: calc(var(--spacing) * 10); }.w-12 { width: calc(var(--spacing) * 12); }.w-16 { width: calc(var(--spacing) * 16); }.w-20 { width: calc(var(--spacing) * 20); }.w-24 { width: calc(var(--spacing) * 24); }.w-28 { width: calc(var(--spacing) * 28); }.w-32 { width: calc(var(--spacing) * 32); }.w-36 { width: calc(var(--spacing) * 36); }.w-40 { width: calc(var(--spacing) * 40); }.w-44 { width: calc(var(--spacing) * 44); }.w-48 { width: calc(var(--spacing) * 48); }.w-56 { width: calc(var(--spacing) * 56); }.w-64 { width: calc(var(--spacing) * 64); }.w-\[140px\] { width: 140px; }.w-auto { width: auto; }.w-fit { width: fit-content; }.w-full { width: 100%; }.w-max { width: max-content; }.w-px { width: 1px; }.w-screen { width: 100vw; }.max-w-2xl { max-width: var(--container-2xl); }.max-w-4xl { max-width: var(--container-4xl); }.max-w-6xl { max-width: var(--container-6xl); }.max-w-7xl { max-width: var(--container-7xl); }.max-w-32 { max-width: calc(var(--spacing) * 32); }.max-w-40 { max-width: calc(var(--spacing) * 40); }.max-w-64 { max-width: calc(var(--spacing) * 64); }.max-w-\[960px\] { max-width: 960px; }.max-w-\[65ch\] { max-width: 65ch; }.max-w-\[1200px\] { max-width: 1200px; }.max-w-\[min\(var\(--site-header-max-width\,970px\)\,98dvw\)\] { max-width: min(var(--site-header-max-width,970px),98dvw); }.max-w-full { max-width: 100%; }.max-w-lg { max-width: var(--container-lg); }.max-w-md { max-width: var(--container-md); }.max-w-none { max-width: none; }.max-w-screen-xl { max-width: var(--breakpoint-xl); }.max-w-sm { max-width: var(--container-sm); }.max-w-xl { max-width: var(--container-xl); }.min-w-0 { min-width: calc(var(--spacing) * 0); }.min-w-8 { min-width: calc(var(--spacing) * 8); }.min-w-10 { min-width: calc(var(--spacing) * 10); }.min-w-16 { min-width: calc(var(--spacing) * 16); }.min-w-20 { min-width: calc(var(--spacing) * 20); }.min-w-36 { min-width: calc(var(--spacing) * 36); }.min-w-40 { min-width: calc(var(--spacing) * 40); }.min-w-52 { min-width: calc(var(--spacing) * 52); }.min-w-\[800px\] { min-width: 800px; }.min-w-\[var\(--tray-bell-min-width\,40px\)\] { min-width: var(--tray-bell-min-width,40px); }.min-w-full { min-width: 100%; }.flex-0 { flex: 0 1 0%; }.flex-1 { flex: 1 1 0%; }.flex-none { flex: 0 0 auto; }.flex-shrink { flex-shrink: 1; }.flex-shrink-0 { flex-shrink: 0; }.shrink { flex-shrink: 1; }.shrink-0 { flex-shrink: 0; }.flex-grow, .grow { flex-grow: 1; }.grow-0 { flex-grow: 0; }.basis-1 { flex-basis: calc(var(--spacing) * 1); }.basis-2 { flex-basis: calc(var(--spacing) * 2); }.basis-3 { flex-basis: calc(var(--spacing) * 3); }.basis-11 { flex-basis: calc(var(--spacing) * 11); }.basis-13 { flex-basis: calc(var(--spacing) * 13); }.basis-auto { flex-basis: auto; }.basis-full { flex-basis: 100%; }.border-collapse { border-collapse: collapse; }.origin-center { transform-origin: 50% center; }.origin-top-right { transform-origin: 100% 0px; }.-translate-x-1 { --tw-translate-x: calc(var(--spacing) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-x-1\/2 { --tw-translate-x: -50%; translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-x-2 { --tw-translate-x: calc(var(--spacing) * -2); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-x-0 { --tw-translate-x: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-x-4 { --tw-translate-x: calc(var(--spacing) * 4); translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-y-1 { --tw-translate-y: calc(var(--spacing) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-y-1\/2 { --tw-translate-y: -50%; translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-y-full { --tw-translate-y: -100%; translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-y-0 { --tw-translate-y: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-y-4 { --tw-translate-y: calc(var(--spacing) * 4); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-y-full { --tw-translate-y: 100%; translate: var(--tw-translate-x) var(--tw-translate-y); }.scale-95 { --tw-scale-x: 95%; --tw-scale-y: 95%; --tw-scale-z: 95%; scale: var(--tw-scale-x) var(--tw-scale-y); }.scale-100 { --tw-scale-x: 100%; --tw-scale-y: 100%; --tw-scale-z: 100%; scale: var(--tw-scale-x) var(--tw-scale-y); }.-rotate-90 { rotate: -90deg; }.rotate-90 { rotate: 90deg; }.rotate-180 { rotate: 180deg; }.transform { transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); }.animate-pulse { animation: var(--animate-pulse); }.animate-spin { animation: var(--animate-spin); }.cursor-default { cursor: default; }.cursor-not-allowed { cursor: not-allowed; }.cursor-pointer { cursor: pointer; }.resize { resize: both; }.resize-y { resize: vertical; }.snap-x { scroll-snap-type: x var(--tw-scroll-snap-strictness); }.snap-mandatory { --tw-scroll-snap-strictness: mandatory; }.snap-start { scroll-snap-align: start; }.list-outside { list-style-position: outside; }.list-disc { list-style-type: disc; }.list-none { list-style-type: none; }.appearance-none { appearance: none; }.grid-cols-1 { grid-template-columns: repeat(1, minmax(0px, 1fr)); }.grid-cols-2 { grid-template-columns: repeat(2, minmax(0px, 1fr)); }.grid-cols-3 { grid-template-columns: repeat(3, minmax(0px, 1fr)); }.grid-rows-2 { grid-template-rows: repeat(2, minmax(0px, 1fr)); }.flex-col { flex-direction: column; }.flex-row { flex-direction: row; }.flex-row-reverse { flex-direction: row-reverse; }.flex-nowrap { flex-wrap: nowrap; }.flex-wrap { flex-wrap: wrap; }.place-items-center { place-items: center; }.content-around { align-content: space-around; }.content-center { align-content: center; }.content-stretch { align-content: stretch; }.items-baseline { align-items: baseline; }.items-center { align-items: center; }.items-end { align-items: flex-end; }.items-start { align-items: flex-start; }.items-stretch { align-items: stretch; }.justify-between { justify-content: space-between; }.justify-center { justify-content: center; }.justify-end { justify-content: flex-end; }.justify-start { justify-content: flex-start; }.gap-0 { gap: calc(var(--spacing) * 0); }.gap-1 { gap: calc(var(--spacing) * 1); }.gap-1\.5 { gap: calc(var(--spacing) * 1.5); }.gap-2 { gap: calc(var(--spacing) * 2); }.gap-2\.5 { gap: calc(var(--spacing) * 2.5); }.gap-3 { gap: calc(var(--spacing) * 3); }.gap-4 { gap: calc(var(--spacing) * 4); }.gap-5 { gap: calc(var(--spacing) * 5); }.gap-6 { gap: calc(var(--spacing) * 6); }.gap-8 { gap: calc(var(--spacing) * 8); }.gap-\[var\(--site-header-gap\,0\10.4px\)\] { gap: var(--site-header-gap,10.4px); }.gap-px { gap: 1px; }:where(.space-y-1 > :not(:last-child)) { --tw-space-y-reverse: 0; margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse)); margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse))); }.gap-x-1 { column-gap: calc(var(--spacing) * 1); }.gap-x-3 { column-gap: calc(var(--spacing) * 3); }.gap-x-4 { column-gap: calc(var(--spacing) * 4); }.gap-x-5 { column-gap: calc(var(--spacing) * 5); }.gap-x-8 { column-gap: calc(var(--spacing) * 8); }.gap-x-10 { column-gap: calc(var(--spacing) * 10); }:where(.space-x-3 > :not(:last-child)) { --tw-space-x-reverse: 0; margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse)); margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse))); }.gap-y-1 { row-gap: calc(var(--spacing) * 1); }.gap-y-2 { row-gap: calc(var(--spacing) * 2); }.gap-y-3 { row-gap: calc(var(--spacing) * 3); }.gap-y-4 { row-gap: calc(var(--spacing) * 4); }.gap-y-6 { row-gap: calc(var(--spacing) * 6); }.gap-y-12 { row-gap: calc(var(--spacing) * 12); }:where(.divide-y > :not(:last-child)) { --tw-divide-y-reverse: 0; border-bottom-style: var(--tw-border-style); border-top-style: var(--tw-border-style); border-top-width: calc(1px * var(--tw-divide-y-reverse)); border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); }:where(.divide-neutral-100 > :not(:last-child)) { border-color: var(--color-neutral-100); }:where(.divide-white > :not(:last-child)) { border-color: var(--color-white); }.self-center { align-self: center; }.self-start { align-self: flex-start; }.truncate { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }.overflow-auto { overflow: auto; }.overflow-hidden { overflow: hidden; }.overflow-visible { overflow: visible; }.overflow-x-auto { overflow-x: auto; }.overflow-x-hidden { overflow-x: hidden; }.overflow-x-scroll { overflow-x: scroll; }.overflow-y-auto { overflow-y: auto; }.overflow-y-clip { overflow-y: clip; }.overflow-y-hidden { overflow-y: hidden; }.overflow-y-visible { overflow-y: visible; }.overscroll-x-contain { overscroll-behavior-x: contain; }.scroll-smooth { scroll-behavior: smooth; }.rounded { border-radius: 4px; }.rounded-2xl { border-radius: var(--radius-2xl); }.rounded-3xl { border-radius: var(--radius-3xl); }.rounded-4xl { border-radius: var(--radius-4xl); }.rounded-\[50\%\] { border-radius: 50%; }.rounded-\[var\(--image--border-radius\,0\)\] { border-radius: var(--image--border-radius,0); }.rounded-full { border-radius: 3.40282e+38px; }.rounded-lg { border-radius: var(--radius-lg); }.rounded-md { border-radius: var(--radius-md); }.rounded-none { border-radius: 0px; }.rounded-sm { border-radius: var(--radius-sm); }.rounded-xl { border-radius: var(--radius-xl); }.rounded-xs { border-radius: var(--radius-xs); }.rounded-t-2xl { border-top-left-radius: var(--radius-2xl); border-top-right-radius: var(--radius-2xl); }.rounded-l-full { border-top-left-radius: 3.40282e+38px; border-bottom-left-radius: 3.40282e+38px; }.rounded-tl-lg { border-top-left-radius: var(--radius-lg); }.rounded-r-full { border-top-right-radius: 3.40282e+38px; border-bottom-right-radius: 3.40282e+38px; }.rounded-tr-lg { border-top-right-radius: var(--radius-lg); }.rounded-b-none { border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; }.rounded-br-lg { border-bottom-right-radius: var(--radius-lg); }.rounded-bl-lg { border-bottom-left-radius: var(--radius-lg); }.border { border-style: var(--tw-border-style); border-width: 1px; }.border-0 { border-style: var(--tw-border-style); border-width: 0px; }.border-1 { border-style: var(--tw-border-style); border-width: 1px; }.border-2 { border-style: var(--tw-border-style); border-width: 2px; }.border-8 { border-style: var(--tw-border-style); border-width: 8px; }.border-x-0 { border-inline-style: var(--tw-border-style); border-inline-width: 0px; }.border-y { border-block-style: var(--tw-border-style); border-block-width: 1px; }.border-y-0 { border-block-style: var(--tw-border-style); border-block-width: 0px; }.border-y-2 { border-block-style: var(--tw-border-style); border-block-width: 2px; }.border-t { border-top-style: var(--tw-border-style); border-top-width: 1px; }.border-t-2 { border-top-style: var(--tw-border-style); border-top-width: 2px; }.border-r { border-right-style: var(--tw-border-style); border-right-width: 1px; }.border-r-0 { border-right-style: var(--tw-border-style); border-right-width: 0px; }.border-b { border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; }.border-b-0 { border-bottom-style: var(--tw-border-style); border-bottom-width: 0px; }.border-b-2 { border-bottom-style: var(--tw-border-style); border-bottom-width: 2px; }.border-l { border-left-style: var(--tw-border-style); border-left-width: 1px; }.border-dashed { --tw-border-style: dashed; border-style: dashed; }.border-none { --tw-border-style: none; border-style: none; }.border-solid { --tw-border-style: solid; border-style: solid; }.border-\(--footer-nav-border-color\) { border-color: var(--footer-nav-border-color); }.border-\[\#DC1F26\] { border-color: rgb(220, 31, 38); }.border-black { border-color: var(--color-black); }.border-gray-100 { border-color: var(--color-gray-100); }.border-gray-200 { border-color: var(--color-gray-200); }.border-gray-300 { border-color: var(--color-gray-300); }.border-gray-400 { border-color: var(--color-gray-400); }.border-gray-500 { border-color: var(--color-gray-500); }.border-gray-600 { border-color: var(--color-gray-600); }.border-gray-700 { border-color: var(--color-gray-700); }.border-gray-800 { border-color: var(--color-gray-800); }.border-green-600 { border-color: var(--color-green-600); }.border-neutral-100 { border-color: var(--color-neutral-100); }.border-neutral-200 { border-color: var(--color-neutral-200); }.border-neutral-300 { border-color: var(--color-neutral-300); }.border-red-600 { border-color: var(--color-red-600); }.border-rose-100 { border-color: var(--color-rose-100); }.border-slate-600 { border-color: var(--color-slate-600); }.border-transparent { border-color: rgba(0, 0, 0, 0); }.border-white { border-color: var(--color-white); }.border-yellow-300 { border-color: var(--color-yellow-300); }.border-yellow-500 { border-color: var(--color-yellow-500); }.border-t-black { border-top-color: var(--color-black); }.border-t-neutral-500 { border-top-color: var(--color-neutral-500); }.border-r-neutral-100 { border-right-color: var(--color-neutral-100); }.border-r-neutral-200 { border-right-color: var(--color-neutral-200); }.border-b-black { border-bottom-color: var(--color-black); }.border-b-neutral-200 { border-bottom-color: var(--color-neutral-200); }.border-b-neutral-300 { border-bottom-color: var(--color-neutral-300); }.border-l-neutral-200 { border-left-color: var(--color-neutral-200); }.bg-\(--footer-bg-color\) { background-color: var(--footer-bg-color); }.bg-\[\#33333370\] { background-color: rgba(51, 51, 51, 0.44); }.bg-\[\#DC1F26\] { background-color: rgb(220, 31, 38); }.bg-\[\#ededed\] { background-color: rgb(237, 237, 237); }.bg-\[var\(--region-redirect-banner-background\,var\(--brand-color-1\)\)\] { background-color: var(--region-redirect-banner-background,var(--brand-color-1)); }.bg-\[var\(--site-header-background-color\,white\)\] { background-color: var(--site-header-background-color,white); }.bg-amber-50 { background-color: var(--color-amber-50); }.bg-black { background-color: var(--color-black); }.bg-blue-50 { background-color: var(--color-blue-50); }.bg-gray-50 { background-color: var(--color-gray-50); }.bg-gray-100 { background-color: var(--color-gray-100); }.bg-gray-200 { background-color: var(--color-gray-200); }.bg-gray-300 { background-color: var(--color-gray-300); }.bg-gray-500 { background-color: var(--color-gray-500); }.bg-gray-500\/75 { background-color: rgba(106, 114, 130, 0.75); }@supports (color:color-mix(in lab,red,red)) {  .bg-gray-500\/75 { background-color: color-mix(in oklab,var(--color-gray-500) 75%,transparent); }}.bg-gray-800 { background-color: var(--color-gray-800); }.bg-gray-900 { background-color: var(--color-gray-900); }.bg-gray-950 { background-color: var(--color-gray-950); }.bg-green-50 { background-color: var(--color-green-50); }.bg-green-100 { background-color: var(--color-green-100); }.bg-green-500 { background-color: var(--color-green-500); }.bg-green-600 { background-color: var(--color-green-600); }.bg-inherit { background-color: inherit; }.bg-neutral-50 { background-color: var(--color-neutral-50); }.bg-neutral-50\/50 { background-color: rgba(250, 250, 250, 0.5); }@supports (color:color-mix(in lab,red,red)) {  .bg-neutral-50\/50 { background-color: color-mix(in oklab,var(--color-neutral-50) 50%,transparent); }}.bg-neutral-100 { background-color: var(--color-neutral-100); }.bg-neutral-200 { background-color: var(--color-neutral-200); }.bg-neutral-300 { background-color: var(--color-neutral-300); }.bg-neutral-500 { background-color: var(--color-neutral-500); }.bg-neutral-600 { background-color: var(--color-neutral-600); }.bg-neutral-800 { background-color: var(--color-neutral-800); }.bg-neutral-900 { background-color: var(--color-neutral-900); }.bg-neutral-900\/40 { background-color: rgba(23, 23, 23, 0.4); }@supports (color:color-mix(in lab,red,red)) {  .bg-neutral-900\/40 { background-color: color-mix(in oklab,var(--color-neutral-900) 40%,transparent); }}.bg-neutral-950 { background-color: var(--color-neutral-950); }.bg-orange-50 { background-color: var(--color-orange-50); }.bg-purple-50 { background-color: var(--color-purple-50); }.bg-red-50 { background-color: var(--color-red-50); }.bg-red-100 { background-color: var(--color-red-100); }.bg-red-500 { background-color: var(--color-red-500); }.bg-red-600 { background-color: var(--color-red-600); }.bg-rose-50 { background-color: var(--color-rose-50); }.bg-rose-500 { background-color: var(--color-rose-500); }.bg-slate-50 { background-color: var(--color-slate-50); }.bg-slate-500 { background-color: var(--color-slate-500); }.bg-slate-900 { background-color: var(--color-slate-900); }.bg-teal-50 { background-color: var(--color-teal-50); }.bg-transparent { background-color: rgba(0, 0, 0, 0); }.bg-white { background-color: var(--color-white); }.bg-yellow-50 { background-color: var(--color-yellow-50); }.bg-yellow-500 { background-color: var(--color-yellow-500); }.bg-zinc-300 { background-color: var(--color-zinc-300); }.bg-zinc-800 { background-color: var(--color-zinc-800); }.bg-zinc-900 { background-color: var(--color-zinc-900); }.bg-gradient-to-l { --tw-gradient-position: to left in oklab; background-image: linear-gradient(var(--tw-gradient-stops)); }.bg-gradient-to-t { --tw-gradient-position: to top in oklab; background-image: linear-gradient(var(--tw-gradient-stops)); }.bg-none { background-image: none; }.from-gray-100 { --tw-gradient-from: var(--color-gray-100); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.from-gray-950 { --tw-gradient-from: var(--color-gray-950); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.from-white { --tw-gradient-from: var(--color-white); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.to-gray-200 { --tw-gradient-to: var(--color-gray-200); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.to-gray-800 { --tw-gradient-to: var(--color-gray-800); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.to-transparent { --tw-gradient-to: transparent; --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.bg-cover { background-size: cover; }.bg-center { background-position: 50% center; }.bg-repeat { background-repeat: repeat; }.fill-gray-500 { fill: var(--color-gray-500); }.fill-white { fill: var(--color-white); }.object-contain { object-fit: contain; }.object-cover { object-fit: cover; }.object-center { object-position: center center; }.p-0 { padding: calc(var(--spacing) * 0); }.p-1 { padding: calc(var(--spacing) * 1); }.p-1\.5 { padding: calc(var(--spacing) * 1.5); }.p-2 { padding: calc(var(--spacing) * 2); }.p-3 { padding: calc(var(--spacing) * 3); }.p-4 { padding: calc(var(--spacing) * 4); }.p-5 { padding: calc(var(--spacing) * 5); }.p-6 { padding: calc(var(--spacing) * 6); }.p-8 { padding: calc(var(--spacing) * 8); }.px-0 { padding-inline: calc(var(--spacing) * 0); }.px-1 { padding-inline: calc(var(--spacing) * 1); }.px-2 { padding-inline: calc(var(--spacing) * 2); }.px-2\.5 { padding-inline: calc(var(--spacing) * 2.5); }.px-3 { padding-inline: calc(var(--spacing) * 3); }.px-4 { padding-inline: calc(var(--spacing) * 4); }.px-5 { padding-inline: calc(var(--spacing) * 5); }.px-6 { padding-inline: calc(var(--spacing) * 6); }.px-8 { padding-inline: calc(var(--spacing) * 8); }.px-12 { padding-inline: calc(var(--spacing) * 12); }.py-0 { padding-block: calc(var(--spacing) * 0); }.py-0\.5 { padding-block: calc(var(--spacing) * .5); }.py-1 { padding-block: calc(var(--spacing) * 1); }.py-1\.5 { padding-block: calc(var(--spacing) * 1.5); }.py-2 { padding-block: calc(var(--spacing) * 2); }.py-2\.5 { padding-block: calc(var(--spacing) * 2.5); }.py-3 { padding-block: calc(var(--spacing) * 3); }.py-4 { padding-block: calc(var(--spacing) * 4); }.py-5 { padding-block: calc(var(--spacing) * 5); }.py-6 { padding-block: calc(var(--spacing) * 6); }.py-7 { padding-block: calc(var(--spacing) * 7); }.py-8 { padding-block: calc(var(--spacing) * 8); }.py-10 { padding-block: calc(var(--spacing) * 10); }.py-12 { padding-block: calc(var(--spacing) * 12); }.py-24 { padding-block: calc(var(--spacing) * 24); }.pt-1 { padding-top: calc(var(--spacing) * 1); }.pt-2 { padding-top: calc(var(--spacing) * 2); }.pt-3 { padding-top: calc(var(--spacing) * 3); }.pt-4 { padding-top: calc(var(--spacing) * 4); }.pt-5 { padding-top: calc(var(--spacing) * 5); }.pt-6 { padding-top: calc(var(--spacing) * 6); }.pt-7 { padding-top: calc(var(--spacing) * 7); }.pt-8 { padding-top: calc(var(--spacing) * 8); }.pr-0 { padding-right: calc(var(--spacing) * 0); }.pr-1 { padding-right: calc(var(--spacing) * 1); }.pr-2 { padding-right: calc(var(--spacing) * 2); }.pr-3 { padding-right: calc(var(--spacing) * 3); }.pr-4 { padding-right: calc(var(--spacing) * 4); }.pr-5 { padding-right: calc(var(--spacing) * 5); }.pr-6 { padding-right: calc(var(--spacing) * 6); }.pr-8 { padding-right: calc(var(--spacing) * 8); }.pr-10 { padding-right: calc(var(--spacing) * 10); }.pr-12 { padding-right: calc(var(--spacing) * 12); }.pb-0 { padding-bottom: calc(var(--spacing) * 0); }.pb-1 { padding-bottom: calc(var(--spacing) * 1); }.pb-2 { padding-bottom: calc(var(--spacing) * 2); }.pb-3 { padding-bottom: calc(var(--spacing) * 3); }.pb-4 { padding-bottom: calc(var(--spacing) * 4); }.pb-5 { padding-bottom: calc(var(--spacing) * 5); }.pb-6 { padding-bottom: calc(var(--spacing) * 6); }.pb-8 { padding-bottom: calc(var(--spacing) * 8); }.pb-12 { padding-bottom: calc(var(--spacing) * 12); }.pb-\[var\(--strapline-padding-bottom\,12px\)\] { padding-bottom: var(--strapline-padding-bottom,12px); }.pl-0 { padding-left: calc(var(--spacing) * 0); }.pl-1 { padding-left: calc(var(--spacing) * 1); }.pl-1\.5 { padding-left: calc(var(--spacing) * 1.5); }.pl-2 { padding-left: calc(var(--spacing) * 2); }.pl-3 { padding-left: calc(var(--spacing) * 3); }.pl-4 { padding-left: calc(var(--spacing) * 4); }.pl-8 { padding-left: calc(var(--spacing) * 8); }.pl-9 { padding-left: calc(var(--spacing) * 9); }.pl-12 { padding-left: calc(var(--spacing) * 12); }.text-center { text-align: center; }.text-left { text-align: left; }.text-right { text-align: right; }.-indent-0 { text-indent: calc(var(--spacing) * 0); }.align-middle { vertical-align: middle; }.align-text-top { vertical-align: text-top; }.align-top { vertical-align: top; }.font-mono { font-family: var(--font-mono); }.font-sans { font-family: var(--font-sans); }.font-serif { font-family: var(--font-serif); }.text-2xl { font-size: var(--text-2xl); line-height: var(--tw-leading,var(--text-2xl--line-height)); }.text-3xl { font-size: var(--text-3xl); line-height: var(--tw-leading,var(--text-3xl--line-height)); }.text-4xl { font-size: var(--text-4xl); line-height: var(--tw-leading,var(--text-4xl--line-height)); }.text-base { font-size: var(--text-base); line-height: var(--tw-leading,var(--text-base--line-height)); }.text-lg { font-size: var(--text-lg); line-height: var(--tw-leading,var(--text-lg--line-height)); }.text-sm { font-size: var(--text-sm); line-height: var(--tw-leading,var(--text-sm--line-height)); }.text-xl { font-size: var(--text-xl); line-height: var(--tw-leading,var(--text-xl--line-height)); }.text-xs { font-size: var(--text-xs); line-height: var(--tw-leading,var(--text-xs--line-height)); }.text-\[10px\] { font-size: 10px; }.text-\[11px\] { font-size: 11px; }.text-\[length\:var\(--strapline-font-size\,13px\)\] { font-size: var(--strapline-font-size,13px); }.leading-2 { --tw-leading: calc(var(--spacing) * 2); line-height: calc(var(--spacing) * 2); }.leading-3 { --tw-leading: calc(var(--spacing) * 3); line-height: calc(var(--spacing) * 3); }.leading-4 { --tw-leading: calc(var(--spacing) * 4); line-height: calc(var(--spacing) * 4); }.leading-5 { --tw-leading: calc(var(--spacing) * 5); line-height: calc(var(--spacing) * 5); }.leading-6 { --tw-leading: calc(var(--spacing) * 6); line-height: calc(var(--spacing) * 6); }.leading-7 { --tw-leading: calc(var(--spacing) * 7); line-height: calc(var(--spacing) * 7); }.leading-8 { --tw-leading: calc(var(--spacing) * 8); line-height: calc(var(--spacing) * 8); }.leading-10 { --tw-leading: calc(var(--spacing) * 10); line-height: calc(var(--spacing) * 10); }.leading-none { --tw-leading: 1; line-height: 1; }.leading-normal { --tw-leading: var(--leading-normal); line-height: var(--leading-normal); }.leading-relaxed { --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); }.leading-snug { --tw-leading: var(--leading-snug); line-height: var(--leading-snug); }.leading-tight { --tw-leading: var(--leading-tight); line-height: var(--leading-tight); }.font-black { --tw-font-weight: var(--font-weight-black); font-weight: var(--font-weight-black); }.font-bold { --tw-font-weight: var(--font-weight-bold); font-weight: var(--font-weight-bold); }.font-extrabold { --tw-font-weight: var(--font-weight-extrabold); font-weight: var(--font-weight-extrabold); }.font-medium { --tw-font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium); }.font-normal { --tw-font-weight: var(--font-weight-normal); font-weight: var(--font-weight-normal); }.font-semibold { --tw-font-weight: var(--font-weight-semibold); font-weight: var(--font-weight-semibold); }.tracking-normal { --tw-tracking: var(--tracking-normal); letter-spacing: var(--tracking-normal); }.tracking-tight { --tw-tracking: var(--tracking-tight); letter-spacing: var(--tracking-tight); }.tracking-wide { --tw-tracking: var(--tracking-wide); letter-spacing: var(--tracking-wide); }.tracking-wider { --tw-tracking: var(--tracking-wider); letter-spacing: var(--tracking-wider); }.tracking-widest { --tw-tracking: var(--tracking-widest); letter-spacing: var(--tracking-widest); }.text-nowrap { text-wrap: nowrap; }.text-wrap { text-wrap: wrap; }.break-words { overflow-wrap: break-word; }.text-ellipsis { text-overflow: ellipsis; }.whitespace-break-spaces { white-space: break-spaces; }.whitespace-normal { white-space: normal; }.whitespace-nowrap { white-space: nowrap; }.whitespace-pre { white-space: pre; }.text-\(--footer-text-color\) { color: var(--footer-text-color); }.text-\[\#DC1F26\] { color: rgb(220, 31, 38); }.text-\[var\(--site-header-text-color\,\#333\)\] { color: var(--site-header-text-color,#333); }.text-amber-700 { color: var(--color-amber-700); }.text-black { color: var(--color-black); }.text-blue-500 { color: var(--color-blue-500); }.text-blue-700 { color: var(--color-blue-700); }.text-current { color: currentcolor; }.text-gray-50 { color: var(--color-gray-50); }.text-gray-100 { color: var(--color-gray-100); }.text-gray-200 { color: var(--color-gray-200); }.text-gray-300 { color: var(--color-gray-300); }.text-gray-400 { color: var(--color-gray-400); }.text-gray-500 { color: var(--color-gray-500); }.text-gray-600 { color: var(--color-gray-600); }.text-gray-700 { color: var(--color-gray-700); }.text-gray-800 { color: var(--color-gray-800); }.text-gray-900 { color: var(--color-gray-900); }.text-green-50 { color: var(--color-green-50); }.text-green-400 { color: var(--color-green-400); }.text-green-500 { color: var(--color-green-500); }.text-green-600 { color: var(--color-green-600); }.text-green-700 { color: var(--color-green-700); }.text-inherit { color: inherit; }.text-lime-700 { color: var(--color-lime-700); }.text-neutral-100 { color: var(--color-neutral-100); }.text-neutral-200 { color: var(--color-neutral-200); }.text-neutral-300 { color: var(--color-neutral-300); }.text-neutral-400 { color: var(--color-neutral-400); }.text-neutral-500 { color: var(--color-neutral-500); }.text-neutral-600 { color: var(--color-neutral-600); }.text-neutral-700 { color: var(--color-neutral-700); }.text-neutral-800 { color: var(--color-neutral-800); }.text-neutral-900 { color: var(--color-neutral-900); }.text-orange-700 { color: var(--color-orange-700); }.text-pink-600 { color: var(--color-pink-600); }.text-purple-700 { color: var(--color-purple-700); }.text-red-50 { color: var(--color-red-50); }.text-red-500 { color: var(--color-red-500); }.text-red-600 { color: var(--color-red-600); }.text-red-700 { color: var(--color-red-700); }.text-rose-600 { color: var(--color-rose-600); }.text-slate-50 { color: var(--color-slate-50); }.text-slate-500 { color: var(--color-slate-500); }.text-teal-700 { color: var(--color-teal-700); }.text-white { color: var(--color-white); }.text-yellow-700 { color: var(--color-yellow-700); }.text-yellow-800 { color: var(--color-yellow-800); }.\[text-transform\:var\(--strapline-text-transform\,uppercase\)\] { text-transform: var(--strapline-text-transform,uppercase); }.capitalize { text-transform: capitalize; }.lowercase { text-transform: lowercase; }.normal-case { text-transform: none; }.uppercase { text-transform: uppercase; }.italic { font-style: italic; }.ordinal { --tw-ordinal: ordinal; font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,); }.line-through { text-decoration-line: line-through; }.no-underline { text-decoration-line: none; }.underline { text-decoration-line: underline; }.decoration-current { text-decoration-color: currentcolor; }.decoration-transparent { text-decoration-color: rgba(0, 0, 0, 0); }.decoration-solid { text-decoration-style: solid; }.underline-offset-2 { text-underline-offset: 2px; }.placeholder-neutral-500::placeholder { color: var(--color-neutral-500); }.opacity-0 { opacity: 0; }.opacity-30 { opacity: 0.3; }.opacity-40 { opacity: 0.4; }.opacity-50 { opacity: 0.5; }.opacity-80 { opacity: 0.8; }.opacity-100 { opacity: 1; }.shadow { --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-2xl { --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color,#00000040); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-\[0_20px_60px_-15px_rgba\(0\,0\,0\,0\.4\)\] { --tw-shadow: 0 20px 60px -15px var(--tw-shadow-color,#0006); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-inner { --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-lg { --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-md { --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-none { --tw-shadow: 0 0 #0000; box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-sm { --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-xl { --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-xs { --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color,#0000000d); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-0 { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-1 { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-4 { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-amber-600 { --tw-ring-color: var(--color-amber-600); }.ring-black { --tw-ring-color: var(--color-black); }.ring-blue-600 { --tw-ring-color: var(--color-blue-600); }.ring-gray-300 { --tw-ring-color: var(--color-gray-300); }.ring-green-600 { --tw-ring-color: var(--color-green-600); }.ring-orange-600 { --tw-ring-color: var(--color-orange-600); }.ring-purple-400 { --tw-ring-color: var(--color-purple-400); }.ring-purple-600 { --tw-ring-color: var(--color-purple-600); }.ring-red-600 { --tw-ring-color: var(--color-red-600); }.ring-slate-600 { --tw-ring-color: var(--color-slate-600); }.ring-teal-600 { --tw-ring-color: var(--color-teal-600); }.ring-white { --tw-ring-color: var(--color-white); }.ring-yellow-600 { --tw-ring-color: var(--color-yellow-600); }.outline-hidden { --tw-outline-style: none; outline-style: none; }@media (forced-colors: active) {  .outline-hidden { outline-offset: 2px; outline: rgba(0, 0, 0, 0) solid 2px; }}.outline, .outline-1 { outline-style: var(--tw-outline-style); outline-width: 1px; }.outline-transparent { outline-color: rgba(0, 0, 0, 0); }.blur { --tw-blur: blur(8px); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.brightness-0 { --tw-brightness: brightness(0%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.contrast-100 { --tw-contrast: contrast(100%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.grayscale { --tw-grayscale: grayscale(100%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.invert { --tw-invert: invert(100%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.filter { filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.backdrop-blur-sm { --tw-backdrop-blur: blur(var(--blur-sm)); backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); }.backdrop-filter { backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); }.transition { transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-all { transition-property: all; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-colors { transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-opacity { transition-property: opacity; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-shadow { transition-property: box-shadow; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-transform { transition-property: transform, translate, scale, rotate; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.duration-75 { --tw-duration: 75ms; transition-duration: 75ms; }.duration-100 { --tw-duration: .1s; transition-duration: 0.1s; }.duration-150 { --tw-duration: .15s; transition-duration: 0.15s; }.duration-200 { --tw-duration: .2s; transition-duration: 0.2s; }.duration-300 { --tw-duration: .3s; transition-duration: 0.3s; }.duration-500 { --tw-duration: .5s; transition-duration: 0.5s; }.ease-in { --tw-ease: var(--ease-in); transition-timing-function: var(--ease-in); }.ease-in-out { --tw-ease: var(--ease-in-out); transition-timing-function: var(--ease-in-out); }.ease-out { --tw-ease: var(--ease-out); transition-timing-function: var(--ease-out); }.prose-neutral { --tw-prose-#widget-1bec2uw: oklch(37.1% 0 0); --tw-prose-headings: oklch(20.5% 0 0); --tw-prose-lead: oklch(43.9% 0 0); --tw-prose-links: oklch(20.5% 0 0); --tw-prose-bold: oklch(20.5% 0 0); --tw-prose-counters: oklch(55.6% 0 0); --tw-prose-bullets: oklch(87% 0 0); --tw-prose-hr: oklch(92.2% 0 0); --tw-prose-quotes: oklch(20.5% 0 0); --tw-prose-quote-borders: oklch(92.2% 0 0); --tw-prose-captions: oklch(55.6% 0 0); --tw-prose-kbd: oklch(20.5% 0 0); --tw-prose-kbd-shadows: oklab(20.5% 0 0/.1); --tw-prose-code: oklch(20.5% 0 0); --tw-prose-pre-code: oklch(92.2% 0 0); --tw-prose-pre-bg: oklch(26.9% 0 0); --tw-prose-th-borders: oklch(87% 0 0); --tw-prose-td-borders: oklch(92.2% 0 0); --tw-prose-invert-#widget-1bec2uw: oklch(87% 0 0); --tw-prose-invert-headings: #fff; --tw-prose-invert-lead: oklch(70.8% 0 0); --tw-prose-invert-links: #fff; --tw-prose-invert-bold: #fff; --tw-prose-invert-counters: oklch(70.8% 0 0); --tw-prose-invert-bullets: oklch(43.9% 0 0); --tw-prose-invert-hr: oklch(37.1% 0 0); --tw-prose-invert-quotes: oklch(97% 0 0); --tw-prose-invert-quote-borders: oklch(37.1% 0 0); --tw-prose-invert-captions: oklch(70.8% 0 0); --tw-prose-invert-kbd: #fff; --tw-prose-invert-kbd-shadows: #ffffff1a; --tw-prose-invert-code: #fff; --tw-prose-invert-pre-code: oklch(87% 0 0); --tw-prose-invert-pre-bg: #00000080; --tw-prose-invert-th-borders: oklch(43.9% 0 0); --tw-prose-invert-td-borders: oklch(37.1% 0 0); }.outline-none { --tw-outline-style: none; outline-style: none; }.select-none { user-select: none; }.ring-inset { --tw-ring-inset: inset; }:is(.\*\:pointer-events-auto > *) { pointer-events: auto; }@media (hover: hover) {  .group-hover\:text-\[\#DC1F26\]:is(:where(.group):hover *) { color: rgb(220, 31, 38); }  .group-hover\:opacity-100:is(:where(.group):hover *) { opacity: 1; }}.visited\:text-inherit:visited { color: inherit; }.empty\:border-none:empty { --tw-border-style: none; border-style: none; }@media (hover: hover) {  .hover\:border-black:hover { border-color: var(--color-black); }  .hover\:border-neutral-300:hover { border-color: var(--color-neutral-300); }  .hover\:bg-\[\#b8181e\]:hover { background-color: rgb(184, 24, 30); }  .hover\:bg-black:hover { background-color: var(--color-black); }  .hover\:bg-blue-50:hover { background-color: var(--color-blue-50); }  .hover\:bg-green-50:hover { background-color: var(--color-green-50); }  .hover\:bg-green-700:hover { background-color: var(--color-green-700); }  .hover\:bg-indigo-50:hover { background-color: var(--color-indigo-50); }  .hover\:bg-neutral-50:hover { background-color: var(--color-neutral-50); }  .hover\:bg-neutral-100:hover { background-color: var(--color-neutral-100); }  .hover\:bg-neutral-200:hover { background-color: var(--color-neutral-200); }  .hover\:bg-neutral-800:hover { background-color: var(--color-neutral-800); }  .hover\:bg-red-50:hover { background-color: var(--color-red-50); }  .hover\:bg-red-700:hover { background-color: var(--color-red-700); }  .hover\:text-\[\#DC1F26\]:hover { color: rgb(220, 31, 38); }  .hover\:text-blue-600:hover { color: var(--color-blue-600); }  .hover\:text-gray-500:hover { color: var(--color-gray-500); }  .hover\:text-indigo-600:hover { color: var(--color-indigo-600); }  .hover\:text-inherit:hover { color: inherit; }  .hover\:text-neutral-700:hover { color: var(--color-neutral-700); }  .hover\:text-neutral-900:hover { color: var(--color-neutral-900); }  .hover\:text-red-600:hover { color: var(--color-red-600); }  .hover\:no-underline:hover { text-decoration-line: none; }  .hover\:underline:hover { text-decoration-line: underline; }  .hover\:decoration-transparent:hover { text-decoration-color: rgba(0, 0, 0, 0); }  .hover\:underline-offset-2:hover { text-underline-offset: 2px; }}.focus\:border-rose-500:focus { border-color: var(--color-rose-500); }.focus\:text-inherit:focus { color: inherit; }.focus\:decoration-transparent:focus { text-decoration-color: rgba(0, 0, 0, 0); }.focus\:ring-1:focus { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus\:ring-2:focus { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus\:ring-4:focus { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus\:ring-\[\#DC1F26\]:focus { --tw-ring-color: #dc1f26; }.focus\:ring-\[\#DC1F26\]\/20:focus { --tw-ring-color: oklab(57.3239% .195826 .0976754/.2); }.focus\:ring-rose-500:focus { --tw-ring-color: var(--color-rose-500); }.focus\:ring-offset-1:focus { --tw-ring-offset-width: 1px; --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); }.focus\:ring-offset-2:focus { --tw-ring-offset-width: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); }.focus\:outline-hidden:focus { --tw-outline-style: none; outline-style: none; }@media (forced-colors: active) {  .focus\:outline-hidden:focus { outline-offset: 2px; outline: rgba(0, 0, 0, 0) solid 2px; }}.focus\:outline-1:focus { outline-style: var(--tw-outline-style); outline-width: 1px; }.focus\:outline-none:focus { --tw-outline-style: none; outline-style: none; }.focus\:\[outline-style\:auto\]:focus { outline-style: auto; }.focus-visible\:ring-2:focus-visible { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus-visible\:ring-gray-900:focus-visible { --tw-ring-color: var(--color-gray-900); }.focus-visible\:outline-hidden:focus-visible { --tw-outline-style: none; outline-style: none; }@media (forced-colors: active) {  .focus-visible\:outline-hidden:focus-visible { outline-offset: 2px; outline: rgba(0, 0, 0, 0) solid 2px; }}.active\:text-inherit:active { color: inherit; }@media not all and (min-width: 640px) {  .max-sm\:top-full { top: 100%; }  .max-sm\:left-2\/4 { left: 50%; }  .max-sm\:hidden { display: none; }  .max-sm\:min-w-\[300px\] { min-width: 300px; }  .max-sm\:-translate-x-2\/4 { --tw-translate-x: -50%; translate: var(--tw-translate-x) var(--tw-translate-y); }}@media (min-width: 640px) {  .sm\:visible { visibility: visible; }  .sm\:relative { position: relative; }  .sm\:top-4 { top: calc(var(--spacing) * 4); }  .sm\:top-\[88px\] { top: 88px; }  .sm\:top-\[92px\] { top: 92px; }  .sm\:right-3 { right: calc(var(--spacing) * 3); }  .sm\:right-4 { right: calc(var(--spacing) * 4); }  .sm\:left-3 { left: calc(var(--spacing) * 3); }  .sm\:order-3 { order: 3; }  .sm\:mx-auto { margin-inline: auto; }  .sm\:my-8 { margin-block: calc(var(--spacing) * 8); }  .sm\:mt-5 { margin-top: calc(var(--spacing) * 5); }  .sm\:mt-6 { margin-top: calc(var(--spacing) * 6); }  .sm\:mb-6 { margin-bottom: calc(var(--spacing) * 6); }  .sm\:mb-8 { margin-bottom: calc(var(--spacing) * 8); }  .sm\:block { display: block; }  .sm\:flex { display: flex; }  .sm\:hidden { display: none; }  .sm\:inline { display: inline; }  .sm\:h-6 { height: calc(var(--spacing) * 6); }  .sm\:h-12 { height: calc(var(--spacing) * 12); }  .sm\:h-\[50px\] { height: 50px; }  .sm\:h-\[var\(--logo-height-desktop\,auto\)\] { height: var(--logo-height-desktop,auto); }  .sm\:max-h-full { max-height: 100%; }  .sm\:w-6 { width: calc(var(--spacing) * 6); }  .sm\:w-12 { width: calc(var(--spacing) * 12); }  .sm\:w-64 { width: calc(var(--spacing) * 64); }  .sm\:w-\[480px\] { width: 480px; }  .sm\:max-w-full { max-width: 100%; }  .sm\:max-w-sm { max-width: var(--container-sm); }  .sm\:min-w-auto { min-width: auto; }  .sm\:translate-y-0 { --tw-translate-y: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); }  .sm\:scale-95 { --tw-scale-x: 95%; --tw-scale-y: 95%; --tw-scale-z: 95%; scale: var(--tw-scale-x) var(--tw-scale-y); }  .sm\:scale-100 { --tw-scale-x: 100%; --tw-scale-y: 100%; --tw-scale-z: 100%; scale: var(--tw-scale-x) var(--tw-scale-y); }  .sm\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0px, 1fr)); }  .sm\:flex-row { flex-direction: row; }  .sm\:items-center { align-items: center; }  .sm\:border-r { border-right-style: var(--tw-border-style); border-right-width: 1px; }  .sm\:border-solid { --tw-border-style: solid; border-style: solid; }  .sm\:border-gray-300 { border-color: var(--color-gray-300); }  .sm\:p-0 { padding: calc(var(--spacing) * 0); }  .sm\:p-3 { padding: calc(var(--spacing) * 3); }  .sm\:p-6 { padding: calc(var(--spacing) * 6); }  .sm\:p-8 { padding: calc(var(--spacing) * 8); }  .sm\:px-0 { padding-inline: calc(var(--spacing) * 0); }  .sm\:px-4 { padding-inline: calc(var(--spacing) * 4); }  .sm\:py-4 { padding-block: calc(var(--spacing) * 4); }  .sm\:pl-14 { padding-left: calc(var(--spacing) * 14); }  .sm\:text-3xl { font-size: var(--text-3xl); line-height: var(--tw-leading,var(--text-3xl--line-height)); }  .sm\:text-base { font-size: var(--text-base); line-height: var(--tw-leading,var(--text-base--line-height)); }}@media (min-width: 768px) {  .md\:visible { visibility: visible; }  .md\:inline { display: inline; }  .md\:h-screen { height: 100vh; }  .md\:w-80 { width: calc(var(--spacing) * 80); }  .md\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0px, 1fr)); }  .md\:flex-row { flex-direction: row; }  .md\:overflow-hidden { overflow: hidden; }  .md\:overflow-y-auto { overflow-y: auto; }  .md\:p-12 { padding: calc(var(--spacing) * 12); }  .md\:text-4xl { font-size: var(--text-4xl); line-height: var(--tw-leading,var(--text-4xl--line-height)); }  .md\:text-lg { font-size: var(--text-lg); line-height: var(--tw-leading,var(--text-lg--line-height)); }  .md\:text-xs { font-size: var(--text-xs); line-height: var(--tw-leading,var(--text-xs--line-height)); }}.prose-headings\:font-serif :where(h1, h2, h3, h4, h5, h6, th):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-p\:font-serif :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-family: var(--font-serif); }.prose-p\:leading-relaxed :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); }.prose-p\:text-neutral-700 :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--color-neutral-700); }@property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }@property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }@property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }@property --tw-rotate-x { syntax: "*"; inherits: false; }@property --tw-rotate-y { syntax: "*"; inherits: false; }@property --tw-rotate-z { syntax: "*"; inherits: false; }@property --tw-skew-x { syntax: "*"; inherits: false; }@property --tw-skew-y { syntax: "*"; inherits: false; }@property --tw-scroll-snap-strictness { syntax: "*"; inherits: false; initial-value: proximity; }@property --tw-space-y-reverse { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-space-x-reverse { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-divide-y-reverse { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }@property --tw-gradient-position { syntax: "*"; inherits: false; }@property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }@property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }@property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }@property --tw-gradient-stops { syntax: "*"; inherits: false; }@property --tw-gradient-via-stops { syntax: "*"; inherits: false; }@property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }@property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }@property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }@property --tw-leading { syntax: "*"; inherits: false; }@property --tw-font-weight { syntax: "*"; inherits: false; }@property --tw-tracking { syntax: "*"; inherits: false; }@property --tw-ordinal { syntax: "*"; inherits: false; }@property --tw-slashed-zero { syntax: "*"; inherits: false; }@property --tw-numeric-figure { syntax: "*"; inherits: false; }@property --tw-numeric-spacing { syntax: "*"; inherits: false; }@property --tw-numeric-fraction { syntax: "*"; inherits: false; }@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-shadow-color { syntax: "*"; inherits: false; }@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }@property --tw-ring-color { syntax: "*"; inherits: false; }@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-inset-ring-color { syntax: "*"; inherits: false; }@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-ring-inset { syntax: "*"; inherits: false; }@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0; }@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-outline-style { syntax: "*"; inherits: false; initial-value: solid; }@property --tw-blur { syntax: "*"; inherits: false; }@property --tw-brightness { syntax: "*"; inherits: false; }@property --tw-contrast { syntax: "*"; inherits: false; }@property --tw-grayscale { syntax: "*"; inherits: false; }@property --tw-hue-rotate { syntax: "*"; inherits: false; }@property --tw-invert { syntax: "*"; inherits: false; }@property --tw-opacity { syntax: "*"; inherits: false; }@property --tw-saturate { syntax: "*"; inherits: false; }@property --tw-sepia { syntax: "*"; inherits: false; }@property --tw-drop-shadow { syntax: "*"; inherits: false; }@property --tw-drop-shadow-color { syntax: "*"; inherits: false; }@property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }@property --tw-drop-shadow-size { syntax: "*"; inherits: false; }@property --tw-backdrop-blur { syntax: "*"; inherits: false; }@property --tw-backdrop-brightness { syntax: "*"; inherits: false; }@property --tw-backdrop-contrast { syntax: "*"; inherits: false; }@property --tw-backdrop-grayscale { syntax: "*"; inherits: false; }@property --tw-backdrop-hue-rotate { syntax: "*"; inherits: false; }@property --tw-backdrop-invert { syntax: "*"; inherits: false; }@property --tw-backdrop-opacity { syntax: "*"; inherits: false; }@property --tw-backdrop-saturate { syntax: "*"; inherits: false; }@property --tw-backdrop-sepia { syntax: "*"; inherits: false; }@property --tw-duration { syntax: "*"; inherits: false; }@property --tw-ease { syntax: "*"; inherits: false; }@keyframes spin {   100% { transform: rotate(360deg); }}@keyframes pulse {   50% { opacity: 0.5; }}      .pcg-results-list { display: flex; flex-direction: column; list-style: none; margin: 0; padding: 0; }      .pcg-result-item { margin: 0; padding: 0; list-style: none; }      .pcg-result-btn { display: flex; width: 100%; align-items: center; justify-content: space-between; padding: 1rem; border: none; background: transparent; cursor: pointer; text-align: left; transition: background 0.2s; height: 76px; }      .pcg-result-btn.hovered { background-color: #f9fafb; }      .pcg-result-border { border-bottom: 1px solid #f5f5f5; }      .pcg-result-content { display: flex; flex-direction: column; justify-content: center; overflow: hidden; padding-right: 1rem; flex: 1; }      .pcg-result-meta-row { display: flex; align-items: center; gap: 0.5rem; overflow: hidden; }      .pcg-result-title { color: #000000; font-weight: bold; font-size: 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }      .pcg-meta-date { color: #737373; font-size: 0.75rem; text-transform: uppercase; letter-spacing: -0.025em; flex-shrink: 0; }      .pcg-result-summary { color: #737373; font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 0.25rem; }      .pcg-result-actions { display: flex; align-items: center; gap: 1rem; flex: none; }      .pcg-score { color: #DC1F26; font-weight: 900; font-size: 1.25rem; font-style: italic; }      .pcg-result-arrow { color: #d4d4d4; transition: color 0.2s; }      .pcg-reader-msg { text-align: center; padding: 2rem; color: #737373; }      .pcg-reader-loading { display: flex; justify-content: center; align-items: center; height: 100%; min-height: 400px; }      .pcg-reader-loading p { color: #DC1F26; }      .pcg-prose-content { max-width: 65ch; margin: 0 auto; padding: 0 0.5rem; }      .pcg-reader-header { margin-bottom: 2rem; }      .pcg-reader-title { font-size: 1.75rem; font-weight: bold; line-height: 1.2; margin-bottom: 1rem; }      .pcg-reader-meta { display: flex; gap: 0.75rem; align-items: center; font-size: 0.875rem; font-weight: 500; color: #52525b; text-transform: uppercase; letter-spacing: 0.05em; }      .pcg-reader-meta-divider { color: #d4d4d8; }      .pcg-reader-body { line-height: 1.6; color: #262626; font-size: 1.125rem; }      .pcg-prose-content img { width: 100%; height: auto; margin: 1.5rem 0; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); border-radius: 0.5rem; }       .pcg-prose-content a { color: #e11d48; text-decoration: none; font-weight: 500; }       .pcg-prose-content a:hover { text-decoration: underline; }       .pcg-prose-content p { margin-bottom: 1.5em !important; display: block !important; }    </style></head><body style="margin:0; padding:0; background:transparent;">  <div style="position: relative;">    <div class="w-full max-w-2xl mx-auto flex justify-center" id="widget-1bec2uw"><div class="w-full max-w-2xl mx-auto font-sans relative"><div id="pcg-search-container" class="bg-[#ededed] p-2 sm:p-3 rounded-full shadow-sm relative z-20 flex items-center"><div class="relative w-full text-sm sm:text-base md:text-lg"><div class="absolute left-4 top-1/2 -translate-y-1/2 text-[#DC1F26]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search w-5 h-5 sm:w-6 sm:h-6" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></div><input id="pcg-search" placeholder="Search our 104 gaming mouse reviews" class="w-full bg-white border-2 border-[#DC1F26] rounded-full py-3 sm:py-4 pl-12 sm:pl-14 pr-10 outline-none text-black placeholder-neutral-500 shadow-inner focus:ring-4 focus:ring-[#DC1F26]/20 transition-all font-medium text-ellipsis overflow-hidden" type="text" value=""></div></div><div id="pcg-footer-stats" class="mt-4 text-center text-sm sm:text-base font-semibold text-neutral-600 px-4">PC Gamer has reviewed <span id="pcg-total-reviews">1336</span> PC gaming goodies since 2020</div></div>      <section id="pcg-dropdown-container" class="absolute top-[76px] sm:top-[88px] left-2 right-2 sm:left-3 sm:right-3 z-50 bg-white border-2 border-[#DC1F26] rounded-2xl shadow-xl flex-col overflow-hidden" style="display: none; max-height: 380px;">        <header style="display: flex; align-items: center; justify-content: space-between; background: #fafafa; padding: 0.75rem 1rem; border-bottom: 1px solid #f5f5f5;">          <h3 id="pcg-dropdown-title" style="font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: #737373; margin: 0;">Latest Reviews</h3>          <div style="display: flex; align-items: center;">            <span style="font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: #737373; margin-right: 1.25rem; user-select: none;">Score</span>            <button id="pcg-close-btn" aria-label="Close" style="color: #a3a3a3; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0;">               <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>            </button>          </div>        </header>        <nav aria-label="Search Results" id="pcg-results" style="overflow-y: auto;">        </nav>      </section>            <article id="pcg-reader-container" class="absolute top-[80px] sm:top-[92px] left-2 right-2 sm:left-3 sm:right-3 z-[100] bg-white border-2 border-[#DC1F26] rounded-2xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.4)] flex-col overflow-hidden" style="display: none; height: 600px;">        <header style="display: flex; align-items: center; justify-content: space-between; padding: 1rem; border-bottom: 1px solid #f5f5f5; flex: none; background: white; position: relative;">          <div style="flex: 1;">            <span style="font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #a3a3a3;">Reader view</span>          </div>                    <div style="position: absolute; left: 50%; transform: translateX(-50%); text-align: center;" id="pcg-reader-link-container">          </div>          <div style="flex: 1; display: flex; justify-content: flex-end;">            <button id="pcg-reader-close" aria-label="Close Reader" style="color: #a3a3a3; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0;">              <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>            </button>          </div>        </header>        <div id="pcg-reader-content" style="flex: 1; padding: 1rem 1rem 3rem; overflow-y: auto; background: white; font-family: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;">        </div>      </article>    </div>  </div>        <script>        const API_BASE = "https://airedale-version-review-widget-builder.ai.studio";        const CATEGORY = "Gaming Mice";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%22WMXAonUQQtoWEioUkjrHQ9%22%2C%22title%22%3A%22AngryMiao%20AM%20Infinity.97%20mouse%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fangrymiao-am-infinity-97-mouse-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-19T12%3A20%3A28Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJFKjNACJuiQRvtSxGHrSRo.jpg%22%2C%22strapline%22%3A%22Flagship%20speed%2C%20boutique%20flair.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22gaming%20mouse%22%2C%22Asus%22%5D%2C%22score%22%3A88%2C%22summary%22%3A%22Flagship%20speed%2C%20boutique%20flair.%22%7D%2C%7B%22id%22%3A%22VoC7Nefyvxfz8vx7DkQY6G%22%2C%22title%22%3A%22Razer%20Naga%20V3%20Pro%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-naga-v3-pro-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-18T09%3A18%3A44Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbxiLAwj2yKPCob3YQrKmwP.jpg%22%2C%22strapline%22%3A%22An%20upgrade%20in%20pretty%20much%20every%20way%20(if%20you%20ignore%20the%20audible%20ping%20of%20the%20switches).%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22gaming%20mouse%22%2C%22Asus%22%5D%2C%22score%22%3A84%2C%22summary%22%3A%22An%20upgrade%20in%20pretty%20much%20every%20way%20(if%20you%20ignore%20the%20audible%20ping%20of%20the%20switches).%22%7D%2C%7B%22id%22%3A%229rH2aY9tFgUwQt6sayPTuA%22%2C%22title%22%3A%22Asus%20ROG%20Harpe%20II%20Extreme%20Edition%2020%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fasus-rog-harpe-ii-extreme-edition-20-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-14T12%3A04%3A08Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5Z5HG6hDyVtLXotzVznxzd.jpg%22%2C%22strapline%22%3A%22The%20most%20luxurious%20gaming%20mouse%20I've%20managed%20to%20get%20grubby.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22gaming%20mouse%22%2C%22Asus%22%2C%22Asus%20ROG%20Harpe%20II%20Extreme%20Edition%2020%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22The%20most%20luxurious%20gaming%20mouse%20I've%20managed%20to%20get%20grubby.%22%7D%2C%7B%22id%22%3A%227Ck8uEtqvvSPUEMBEB3WBL%22%2C%22title%22%3A%22Pulsar%20Feinmann%20F01%20Noctua%20Edition%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fpulsar-feinmann-f01-noctua-edition-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-11T14%3A22%3A21Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FVwUWxAQNqmnvcuJzK3zznH.jpg%22%2C%22strapline%22%3A%22Breezy%20and%20comfortable%2C%20but%20I'm%20not%20a%20fan%20of%20its%20price%20and%20battery.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22budget%20gaming%20mice%22%2C%22gaming%20mouse%22%2C%22budget%20gaming%20mouse%22%2C%22Noctua%22%5D%2C%22score%22%3A73%2C%22summary%22%3A%22Breezy%20and%20comfortable%2C%20but%20I'm%20not%20a%20fan%20of%20its%20price%20and%20battery.%22%7D%2C%7B%22id%22%3A%22oFURMEnCZ5FiByvBsJjKtG%22%2C%22title%22%3A%22Mchose%20K7%20V2%20Ultra%2B%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fmchose-k7-v2-ultra-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-31T11%3A12%3A44Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJPWDDosBpyPGimW3CEGTPg.jpg%22%2C%22strapline%22%3A%22Great%20specs%20with%20a%20Viper%20V3%2FV4%20Pro's%20shape%2C%20for%20less.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22gaming%20mice%22%2C%22MCHOSE%22%2C%22Mchose%20K7%20V2%20Ultra%2B%22%2C%22Razer%20Viper%20V4%20Pro%22%5D%2C%22score%22%3A89%2C%22summary%22%3A%22Great%20specs%20with%20a%20Viper%20V3%2FV4%20Pro's%20shape%2C%20for%20less.%22%7D%2C%7B%22id%22%3A%2274wWM4f8JebSDZj7RERSUU%22%2C%22title%22%3A%22Asus%20ProArt%20Mouse%20MD301%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fasus-proart-mouse-md301%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-08T16%3A12%3A04Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FCDsLPYCyTeZscFLF2sjGHQ.jpg%22%2C%22strapline%22%3A%22A%20professional%20design%2C%20but%20with%20enough%20quirks%20to%20give%20me%20pause.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Asus%22%2C%22ergonomic%20mouse%22%2C%22Logitech%20MX%20Master%204%22%2C%22mouse%22%2C%22polling%20rate%22%2C%22mouse%20sensor%22%2C%22Asus%20ProArt%20Mouse%20MD301%22%5D%2C%22score%22%3A71%2C%22summary%22%3A%22A%20professional%20design%2C%20but%20with%20enough%20quirks%20to%20give%20me%20pause.%22%7D%2C%7B%22id%22%3A%22K53srydpKdGNFuLaqCTAra%22%2C%22title%22%3A%22Logitech%20Mobi%20Fold%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-mobi-fold-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-07T11%3A41%3A33Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FFgQTQfXDfPekUFgZ9dwEZ7.jpg%22%2C%22strapline%22%3A%22Is%20that%20a%20mouse%20in%20your%20pocket%20or%20do%20you%20need%20to%20see%20a%20doctor%3F%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22gaming%20mouse%22%2C%22travel%20mouse%22%2C%22Logitech%22%2C%22Mobi%20Fold%22%5D%2C%22score%22%3A65%2C%22summary%22%3A%22Is%20that%20a%20mouse%20in%20your%20pocket%20or%20do%20you%20need%20to%20see%20a%20doctor%3F%22%7D%2C%7B%22id%22%3A%22CpybdgtNoaxnCfqj8qUD36%22%2C%22title%22%3A%22Logitech%20G305%20X%20Superlight%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-g305-x-superlight-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-19T15%3A37%3A08Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FpTZdszAGGB42CfodWGhPqb.jpg%22%2C%22strapline%22%3A%22A%20solid%20and%20fairly%20plain%20upgrade%20on%20the%20original%2C%20but%20not%20wholly%20better%20either.%20%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22budget%20gaming%20mice%22%2C%22gaming%20mouse%22%2C%22budget%20gaming%20mouse%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20solid%20and%20fairly%20plain%20upgrade%20on%20the%20original%2C%20but%20not%20wholly%20better%20either.%20%22%7D%2C%7B%22id%22%3A%229yFaBcP8M4acKy3vvNHd3S%22%2C%22title%22%3A%22MSI%20Versa%20300%20Wireless%208K%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fmsi-versa-300-wireless-8k-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-15T15%3A35%3A37Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJBmtjZP3tFxWBytcBD26Jb.jpg%22%2C%22strapline%22%3A%22Surprisingly%20potent.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22MSI%22%2C%22gaming%20mouse%22%2C%228K%22%2C%22mouse%22%2C%22gaming%20mice%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22Surprisingly%20potent.%22%7D%2C%7B%22id%22%3A%22PnfkWCANTGjwi9CK2iZQBN%22%2C%22title%22%3A%22ProtoArc%20EM25%20ergonomic%20mouse%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fprotoarc-em25-ergonomic-mouse-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-12T16%3A31%3A51Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FZwZJejJtPeZcajbcwMNWfX.jpg%22%2C%22strapline%22%3A%22Rough%20around%20the%20edges.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22ergonomic%20mouse%22%2C%22ProtoArc%22%2C%22ProtoArc%20EM25%22%2C%22RF%202.4%20GHz%22%2C%22Bluetooth%22%2C%22wireless%20mouse%22%5D%2C%22score%22%3A40%2C%22summary%22%3A%22Rough%20around%20the%20edges.%22%7D%5D"));                const searchInput = document.getElementById("pcg-search");        const resultsContainer = document.getElementById("pcg-results");        const dropdownContainer = document.getElementById("pcg-dropdown-container");        const closeBtn = document.getElementById("pcg-close-btn");        const titleSpan = document.getElementById("pcg-dropdown-title");                const readerContainer = document.getElementById("pcg-reader-container");        const readerContent = document.getElementById("pcg-reader-content");        const readerCloseBtn = document.getElementById("pcg-reader-close");                let debounceTimer;                function updateIframeHeight(isDropdownOpen, isReaderOpen = false) {          let newHeight = '140px';          if (isReaderOpen) {            newHeight = '720px';          } else if (isDropdownOpen) {            newHeight = '500px';          }                    let resizedSuccessfully = false;          try {            if (window.frameElement) {              window.frameElement.style.height = newHeight;              resizedSuccessfully = true;            }          } catch (e) {            // Ignore cross-origin error when accessing frameElement          }                    if (!resizedSuccessfully && window.parent && window.parent !== window) {            try {              // Send message to parent only for cross-origin resizing               // using '*' to avoid target origin mismatch errors              window.parent.postMessage({ type: 'pcg-widget-resize', height: newHeight }, '*');            } catch (e) {}          }        }        function closeReader() {          readerContainer.style.display = 'none';          readerContent.innerHTML = '';          updateIframeHeight(dropdownContainer.style.display === 'flex', false);        }        if (readerCloseBtn) readerCloseBtn.addEventListener('click', closeReader);                function closeDropdown() {          dropdownContainer.style.display = 'none';          updateIframeHeight(false, readerContainer.style.display === 'flex');        }                function openDropdown() {          dropdownContainer.style.display = 'flex';          closeReader();          updateIframeHeight(true, false);        }                if (closeBtn) closeBtn.addEventListener("click", closeDropdown);                document.addEventListener("click", (e) => {           if (!searchInput.contains(e.target) && !dropdownContainer.contains(e.target) && !readerContainer.contains(e.target)) {               closeDropdown();           }        });                const TOTAL_COUNT = 1336;        const CATEGORY_COUNT = 76;        function initializeStats() {           const totalSpan = document.getElementById("pcg-total-reviews");           if (totalSpan) totalSpan.textContent = TOTAL_COUNT;                      if (searchInput && CATEGORY_COUNT > 0) {             function formatCat(cat) {               if (cat === "PC gaming hardware") return "PC gaming hardware";               if (cat === "Handheld Gaming PCs") return "handheld gaming PC";                if (cat === "Gaming PCs") return "gaming PC";               if (cat === "Gaming Mice") return "gaming mouse";               if (cat === "Memory" || cat === "Cooling" || cat === "Lighting" || cat === "Hardware") return cat.toLowerCase();               if (cat === "Earbuds & Headphones") return "earbud & headphone";               return cat.replace(/s$/i, '').toLowerCase();             }             const formattedCat = formatCat(CATEGORY);             searchInput.placeholder = CATEGORY_COUNT > 50 ? "Search our " + CATEGORY_COUNT + " " + formattedCat + " reviews" : "Search our " + formattedCat + " reviews";           }        }                initializeStats();        function fetchResults(q) {          if (q) {             titleSpan.textContent = "Search Results";          } else {             titleSpan.textContent = "Latest " + (CATEGORY === "PC gaming hardware" ? "PC gaming hardware" : CATEGORY) + " Reviews";          }                     if (!q) {            renderResults(LOCAL_REVIEWS);            return;          }                    resultsContainer.innerHTML = '<p style="padding:2rem;text-align:center;color:#737373;">Loading...</p>';                    fetch(API_BASE + "/api/reviews?category=" + encodeURIComponent(CATEGORY) + "&q=" + encodeURIComponent(q) + "&limit=20")            .then(res => res.json())            .then(data => {               renderResults(data.results || []);            })            .catch(err => {               console.error("Search failed:", err);               resultsContainer.innerHTML = '<p style="padding:2rem;text-align:center;color:#DC1F26;">Error searching reviews.</p>';            });        }                function renderResults(results) {          if(!results || results.length === 0) {            resultsContainer.innerHTML = '<p class="pcg-reader-msg">No results found.</p>';            return;          }          let html = '<ul class="pcg-results-list">';          results.forEach((res, i) => {            let scoreHtml = res.score ? '<div class="pcg-score" aria-label="Score: ' + res.score + '">' + res.score + '</div>' : '';                        // Format URL properly            let targetUrl = res.url.startsWith("http") ? res.url : "https://www.pcgamer.com" + res.url;                        let borderClass = i < results.length - 1 ? 'pcg-result-border' : '';                        let dateHtml = '';            if (res.publishDate) {              try {                let dateStr = new Date(res.publishDate).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });                dateHtml = '<span class="pcg-meta-date">' + dateStr + '</span>';              } catch(e) {}            }                        let subHtml = '<span class="pcg-result-summary">' + (res.summary || "") + '</span>';                        html += '<li class="pcg-result-item"><button aria-label="Read ' + (res.title || "Review").replace(/"/g, '&quot;') + '" onclick="openReaderInPage(\'' + targetUrl + '\')" class="pcg-result-btn ' + borderClass + '" onmouseover="this.classList.add(\'hovered\')" onmouseout="this.classList.remove(\'hovered\')" >' +                  '<div class="pcg-result-content">' +                    '<div class="pcg-result-meta-row">' +                       '<span class="pcg-result-title">' + (res.title || "Review") + '</span>' +                      dateHtml +                     '</div>' +                    subHtml +                  '</div>' +                  '<div class="pcg-result-actions">' +                    scoreHtml +                    '<span class="pcg-result-arrow" aria-hidden="true">→</span>' +                  '</div>' +              '</button></li>';          });          html += '</ul>';          resultsContainer.innerHTML = html;                    updateJSONLD(results);        }        function updateJSONLD(results) {          let ldScript = document.getElementById('pcg-json-ld');          if (!ldScript) {            ldScript = document.createElement('script');            ldScript.type = 'application/ld+json';            ldScript.id = 'pcg-json-ld';            document.head.appendChild(ldScript);          }                    const itemListElements = results.slice(0, 50).map((res, index) => {            let targetUrl = res.url.startsWith("http") ? res.url : "https://www.pcgamer.com" + res.url;            let itemName = (res.title || "Product").replace(/\s+review$/i, '');            let schemaItem = {              "@type": "Product",              "name": itemName,              "image": res.image || targetUrl,              "review": {                "@type": "Review",                "url": targetUrl,                "name": res.title || "Review",                "datePublished": res.publishDate || new Date().toISOString().split('T')[0],                "author": {                  "@type": "Organization",                  "name": "PC Gamer"                },                "publisher": {                  "@type": "Organization",                  "name": "PC Gamer"                }              }            };            if (res.score) {              schemaItem.review.reviewRating = {                "@type": "Rating",                "ratingValue": res.score,                "bestRating": "100",                "worstRating": "1"              };            }            return {              "@type": "ListItem",              "position": index + 1,              "item": schemaItem            };          });          const schema = {            "@context": "https://schema.org",            "@type": "ItemList",            "itemListElement": itemListElements          };          ldScript.textContent = JSON.stringify(schema);        }        function openReaderInPage(targetUrl) {          closeDropdown();          readerContainer.style.display = 'flex';          updateIframeHeight(false, true);          const readerLinkContainer = document.getElementById("pcg-reader-link-container");          if (readerLinkContainer) {            readerLinkContainer.innerHTML = '<a href="' + targetUrl + '" target="_blank" rel="noopener noreferrer" class="bg-[#DC1F26] text-white px-3 py-1.5 rounded-full font-sans text-[11px] md:text-xs font-bold hover:bg-black transition-colors border-2 border-[#DC1F26] hover:border-black shadow-sm inline-block" style="text-decoration: none;">Read full review</a>';          }          readerContent.innerHTML = '<div class="pcg-reader-loading"><p>Loading article...</p></div>';          fetch(API_BASE + "/api/content?q=" + btoa(targetUrl))            .then(res => res.json())            .then(data => {               if(!data || !data.content) {                 readerContent.innerHTML = '<div class="pcg-reader-msg">Could not load article content.</div>';                 return;               }               let html = '<div class="pcg-prose-content">';               html += '<header class="pcg-reader-header">';               html += '<h1 class="pcg-reader-title">' + (data.title || '') + '</h1>';                              if (data.byline || data.date) {                 html += '<div class="pcg-reader-meta">';                 if (data.byline) {                   html += '<span>BY ' + data.byline + '</span>';                 }                 if (data.byline && data.date) {                   html += '<span class="pcg-reader-meta-divider">|</span>';                 }                 if (data.date) {                   html += '<span>PUBLISHED ' + data.date + '</span>';                 }                 html += '</div>';               }               html += '</header>';                              html += '<div class="pcg-reader-body">';               html += data.content;               html += '</div></div>';                              readerContent.innerHTML = html;            })            .catch(err => {               console.error(err);               readerContent.innerHTML = '<div class="pcg-reader-msg">An error occurred loading the article.</div>';            });        }        const searchBoxContainer = document.getElementById("pcg-search-container");        if (searchBoxContainer) {           searchBoxContainer.addEventListener("click", () => {              openDropdown();           });        }                if (searchInput) {          searchInput.addEventListener("focus", () => {             openDropdown();          });          searchInput.addEventListener("click", () => {             openDropdown();          });          searchInput.addEventListener("input", (e) => {            openDropdown();            clearTimeout(debounceTimer);            debounceTimer = setTimeout(() => fetchResults(e.target.value), 500);          });                    // Initial render with embedded cache          fetchResults("");                    if (INITIALLY_OPEN) {            openDropdown();          }                    // Background revalidate          fetch(API_BASE + "/api/reviews?category=" + encodeURIComponent(CATEGORY) + "&limit=10")            .then(res => res.json())            .then(data => {               if (data && data.results && data.results.length > 0) {                 LOCAL_REVIEWS = data.results;                 // If the user hasn't typed anything yet, refresh the UI silently                 if (!searchInput.value) {                   fetchResults("");                 }               }            })            .catch(err => console.error("Background refresh failed:", err));        }      </script>    </body></html>"   width="100%"   height="140"   style="border: none; width: 100%; max-width: 1024px; margin: 0 auto; display: block; background: transparent; transition: height 0.3s ease-out;"   title="PC Gamer Gaming Mice Widget"></iframe></div><h2 class="article-body__section" id="section-prime-day-gaming-mouse-deals"><span>Prime Day gaming mouse deals</span></h2><div class="product"><a data-dimension112="8f407686-bb39-11f1-af31-3179bb99ad85" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="$25.99" href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1401px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qgFqUinn2HCKHEThJ47QpC" name="1636734797.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1401" height="1401" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" target="_blank" rel="nofollow" data-dimension112="8f407686-bb39-11f1-af31-3179bb99ad85" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="$25.99">G203 | Wired: was $34.99 now $25.99</a></strong><br>Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.</p><p><strong>Key specs: Wired | 8,000 DPI | Right-handed</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/site/logitech-g203-lightsync-wired-optical-gaming-mouse-with-8000-dpi-sensor-white/6409362.p?skuId=6409362" target="_blank">Best Buy $39.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" target="_blank" rel="nofollow" data-dimension112="8f407686-bb39-11f1-af31-3179bb99ad85" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="$25.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f40774e-bb39-11f1-a4c7-7f324f579c2b" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="$29.99" href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:212px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="krHdzSvvW5EskC6Keg74P9" name="1700740513.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9-1920-80.jpg" mos="" align="middle" fullscreen="" width="212" height="212" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" target="_blank" rel="nofollow" data-dimension112="8f40774e-bb39-11f1-a4c7-7f324f579c2b" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="$29.99">G305 Lightspeed | Wireless: was $49.99 now $29.99</a></strong><br>The Logitech G305 Lightspeed is our<a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank"> favorite budget wireless mouse</a>—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills.</p><p><strong>Key specs: Wireless | 12,000 DPI | Right-handed</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/logitech-g305-lightspeed-wireless-optical-6-programmable-button-gaming-mouse-with-12000-dpi-hero-sensor-wireless-white/J7H7ZY2ZYR" target="_blank">Best Buy $49.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" target="_blank" rel="nofollow" data-dimension112="8f40774e-bb39-11f1-a4c7-7f324f579c2b" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="$29.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f4076ea-bb39-11f1-bd4c-a987d18ae2e1" data-action="Deal Block" data-label="Model O Eternal | Wired" data-dimension48="Model O Eternal | Wired" data-dimension25="$34.99" href="https://www.amazon.com/dp/B0F9B8L5X6?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="hAMTZaKrcWhNeajCdgFnvR" name="PCGamer Deal Block - 2025-11-25T153526.633" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/hAMTZaKrcWhNeajCdgFnvR-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0F9B8L5X6?th=1" target="_blank" rel="nofollow" data-dimension112="8f4076ea-bb39-11f1-bd4c-a987d18ae2e1" data-action="Deal Block" data-label="Model O Eternal | Wired" data-dimension48="Model O Eternal | Wired" data-dimension25="$34.99">Model O Eternal | Wired: was $39.99 now $34.99</a></strong><br>You aren't packing an incredibly high DPI or polling rate with this mouse, but you are getting strong performance for the price, as well as a lightweight, comfortable build, and solid software. Cheap and cheerful is the aim here.</p><p><strong>Key specs: 12,000 DPI | 300 IPS |  1,000 Hz | 55 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/glorious-model-o-eternal-lightweight-wired-optical-gaming-mouse-with-dual-zone-rgb-lighting-wired-matte-white/J39TGZ8SRL?irclickid=2FVW4gUPuxyKTPQxHiQQfQIVUkpWKjQdV36f2U0&irgwc=1&afsrc=1&ref=198&loc=Future%20Dedicated%20Account&acampID=0&mpid=1943169&affgroup=%22Content%22" target="_blank">Best Buy $34.99</a><strong></strong><a class="view-deal button" href="https://www.amazon.com/dp/B0F9B8L5X6?th=1" target="_blank" rel="nofollow" data-dimension112="8f4076ea-bb39-11f1-bd4c-a987d18ae2e1" data-action="Deal Block" data-label="Model O Eternal | Wired" data-dimension48="Model O Eternal | Wired" data-dimension25="$34.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407834-bb39-11f1-8a08-23fecaf5d2f8" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="$37.99" href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="SaXBHtPWoMGvzcyvsLNQQX" name="1698934268.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" target="_blank" rel="nofollow" data-dimension112="8f407834-bb39-11f1-8a08-23fecaf5d2f8" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="$37.99">G502 Hero | Wired: was $69.99 now $37.99</a></strong><br>This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. </p><p><strong>Key specs: Wired | 25,600 DPI | Right-handed</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/site/logitech-g502-hero-wired-optical-gaming-mouse-with-rgb-lighting-black/6265133.p?skuId=6265133" target="_blank">Best Buy $69.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" target="_blank" rel="nofollow" data-dimension112="8f407834-bb39-11f1-8a08-23fecaf5d2f8" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="$37.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407898-bb39-11f1-9fe6-a57bc84d8df7" data-action="Deal Block" data-label="Retro R8 | Wireless" data-dimension48="Retro R8 | Wireless" data-dimension25="$44.21" href="https://www.amazon.com/Charging-Optical-Wireless-Programmable-Switches/dp/B0F37BTPPH" 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="6ftyiD7DphdvJ2Z5PfoAKh" name="PCGamer Deal Block (1)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6ftyiD7DphdvJ2Z5PfoAKh-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Charging-Optical-Wireless-Programmable-Switches/dp/B0F37BTPPH" target="_blank" rel="nofollow" data-dimension112="8f407898-bb39-11f1-9fe6-a57bc84d8df7" data-action="Deal Block" data-label="Retro R8 | Wireless" data-dimension48="Retro R8 | Wireless" data-dimension25="$44.21">Retro R8 | Wireless: was $49.99 now $44.21</a></strong><br>Our James <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">reviewed the 8BitDo Retro R8</a>, giving it an 87%, and for good reason. It's a mouse with a super unique look, good specs for the price, and it even comes with a cute charging stand. The retro feel is definitely something to get used to, with buttons that are sunken into the mouse itself, but it's a joy to use regardless. </p><p><strong>Key specs: up to 8,000 Hz polling | 26,000 DPI | 77 g | up to 100-hour battery life</strong></p><p><strong>Price check: </strong><a href="https://www.newegg.com/p/32K-00R0-00033" target="_blank">Newegg $49.99</a><em><strong></strong></em><a class="view-deal button" href="https://www.amazon.com/Charging-Optical-Wireless-Programmable-Switches/dp/B0F37BTPPH" target="_blank" rel="nofollow" data-dimension112="8f407898-bb39-11f1-9fe6-a57bc84d8df7" data-action="Deal Block" data-label="Retro R8 | Wireless" data-dimension48="Retro R8 | Wireless" data-dimension25="$44.21">View Deal</a></p></div><div class="product"><a data-dimension112="8f4078fc-bb39-11f1-8e08-352cc27b5839" data-action="Deal Block" data-label="Burst II Air | Wireless" data-dimension48="Burst II Air | Wireless" data-dimension25="$54.99" href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1504px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="oHpVvSDqMgFC5rnRe2pUnQ" name="1790601251.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oHpVvSDqMgFC5rnRe2pUnQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1504" height="1494" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" target="_blank" rel="nofollow" data-dimension112="8f4078fc-bb39-11f1-8e08-352cc27b5839" data-action="Deal Block" data-label="Burst II Air | Wireless" data-dimension48="Burst II Air | Wireless" data-dimension25="$54.99">Burst II Air | Wireless: was $99.99 now $54.99</a></strong><br>We gave this mouse an 85% in <a href="https://www.pcgamer.com/hardware/gaming-mice/turtle-beach-burst-ii-air-review/" target="_blank">our review</a>, praising its very low weight, huge battery life, and super-responsive feel. It doesn't have quite as many fun extras as competitors and can be a bit of a fingerprint magnet, but it is a super solid choice at this price.</p><p><strong>Key specs: Wireless | 26,000 DPI | Symmetrical</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/site/turtle-beach-burst-ii-air-ultra-lightweight-wireless-symmetrical-gaming-mouse-with-bluetooth-120-hour-battery-black/6579301.p?skuId=6579301" target="_blank">Best Buy $99.99</a><a class="view-deal button" href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" target="_blank" rel="nofollow" data-dimension112="8f4078fc-bb39-11f1-8e08-352cc27b5839" data-action="Deal Block" data-label="Burst II Air | Wireless" data-dimension48="Burst II Air | Wireless" data-dimension25="$54.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407a28-bb39-11f1-9086-f5bfce42139a" data-action="Deal Block" data-label="DeathAdder V3 HyperSpeed | Wireless" data-dimension48="DeathAdder V3 HyperSpeed | Wireless" data-dimension25="$79.99" href="https://www.amazon.com/Razer-DeathAdder-HyperSpeed-Wireless-Gaming/dp/B0D4RF55QK/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="PCcmPTSb6k5nc2pqpvNUbN" name="razerdeathadderv3hyperspeed" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/PCcmPTSb6k5nc2pqpvNUbN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-DeathAdder-HyperSpeed-Wireless-Gaming/dp/B0D4RF55QK/" target="_blank" rel="nofollow" data-dimension112="8f407a28-bb39-11f1-9086-f5bfce42139a" data-action="Deal Block" data-label="DeathAdder V3 HyperSpeed | Wireless" data-dimension48="DeathAdder V3 HyperSpeed | Wireless" data-dimension25="$79.99">DeathAdder V3 HyperSpeed | Wireless: was $99.99 now $79.99</a></strong><br>Simple, lightweight, fast and accurate. What more do you need from a gaming mouse? Because it eschews all the fancy gadgets that so many mice have these days, you save a bundle of cash and get a really long battery life.</p><p><strong>Key specs: 26K sensor | Wireless | 55 g weight</strong></p><p><strong>Price check: </strong><a href="https://www.razer.com/gaming-mice/razer-deathadder-v3-hyperspeed/RZ01-05140100-R3U1" target="_blank">Razer $99.99</a><a class="view-deal button" href="https://www.amazon.com/Razer-DeathAdder-HyperSpeed-Wireless-Gaming/dp/B0D4RF55QK/" target="_blank" rel="nofollow" data-dimension112="8f407a28-bb39-11f1-9086-f5bfce42139a" data-action="Deal Block" data-label="DeathAdder V3 HyperSpeed | Wireless" data-dimension48="DeathAdder V3 HyperSpeed | Wireless" data-dimension25="$79.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407af0-bb39-11f1-ac92-315a3f6b90cd" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="$109.98" href="https://www.amazon.com/Logitech-Lightspeed-Left-Handed-Customizable-Switchable/dp/B0CJ4TPLRM" 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="Q3PxPrNWbFomndFenbZFge" name="PCGamer Deal Block - 2025-11-06T154608.374" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Q3PxPrNWbFomndFenbZFge-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-Lightspeed-Left-Handed-Customizable-Switchable/dp/B0CJ4TPLRM" target="_blank" rel="nofollow" data-dimension112="8f407af0-bb39-11f1-ac92-315a3f6b90cd" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="$109.98">G Pro 2 Lightspeed | Wireless: was $149.99 now $109.98</a></strong><br>Though it doesn't quite look as impressive as the Superlight 2, the G Pro 2 Lightspeed matches the same internals and is truly ambidextrous, thanks to swappable side buttons.</p><p><strong>Key specs: 44,000 DPI | 888 IPS | 88g accelerations | 4 side buttons</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/logitech-pro-2-lightspeed-lightweight-optical-hero-44k-dpi-gaming-mouse-with-4-customizable-and-switchable-magnetic-side-buttons-wireless-black/J7H7ZYG63P" target="_blank">Best Buy $149.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-Lightspeed-Left-Handed-Customizable-Switchable/dp/B0CJ4TPLRM" target="_blank" rel="nofollow" data-dimension112="8f407af0-bb39-11f1-ac92-315a3f6b90cd" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="$109.98">View Deal</a></p></div><div class="product"><a data-dimension112="8f407a8c-bb39-11f1-a6a1-47d2ea6d102e" data-action="Deal Block" data-label="Scimitar Elite Wireless SE" data-dimension48="Scimitar Elite Wireless SE" data-dimension25="$109.99" href="https://www.amazon.com/dp/B0F6NJYMWF?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="69nrk9QPJyYf8GEobHMCNi" name="Scimitar Elite Wireless SE" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/69nrk9QPJyYf8GEobHMCNi-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>An MMO mouse and a Stream Deck in one, this rodent is a bit heavy but great for productivity and MMO usage. In <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review" target="_blank" data-dimension112="8f407a8c-bb39-11f1-a6a1-47d2ea6d102e" data-action="Deal Block" data-label="Scimitar Elite Wireless SE" data-dimension48="Scimitar Elite Wireless SE" data-dimension25="$109.99">our review</a>, Hope said the Scimitar Elite Wireless SE "might not match the active use of lighter, more FPS-oriented esports mice, but it's a productivity and streaming powerhouse."</p><p><strong>Key specs: 16 buttons | 33K DPI | 1,000 Hz | 161 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/corsair-scimitar-elite-wireless-se-gaming-mouse-with-16-programmable-buttons-wireless-gun-metal-black/J39TSCH9HJ" target="_blank">Best Buy $123.99</a> | <a href="https://www.newegg.com/corsair-scimitar-elite-wireless-se-usb-bluetooth-bluetooth-2-4ghz-wired/p/N82E16826816225" target="_blank">Newegg $124.99</a><a class="view-deal button" href="https://www.amazon.com/dp/B0F6NJYMWF?th=1" target="_blank" rel="nofollow" data-dimension112="8f407a8c-bb39-11f1-a6a1-47d2ea6d102e" data-action="Deal Block" data-label="Scimitar Elite Wireless SE" data-dimension48="Scimitar Elite Wireless SE" data-dimension25="$109.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407bc2-bb39-11f1-8631-a57dfb7e727f" data-action="Deal Block" data-label="Viper V3 Pro | Wireless" data-dimension48="Viper V3 Pro | Wireless" data-dimension25="$110.30" href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5S/ref=sr_1_7_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="xR8QJpjHGx27FS3pZnYBj7" name="1790601520.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xR8QJpjHGx27FS3pZnYBj7-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1509" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5S/ref=sr_1_7_sspa" target="_blank" rel="nofollow" data-dimension112="8f407bc2-bb39-11f1-8631-a57dfb7e727f" data-action="Deal Block" data-label="Viper V3 Pro | Wireless" data-dimension48="Viper V3 Pro | Wireless" data-dimension25="$110.30">Viper V3 Pro | Wireless: was $159.99 now $110.30</a></strong><br>Razer doesn't play around with its compact Viper line-up. The V3 Pro is pretty light, feels great in hand, and tracks your movement like any other high-end mouse. It's top-tier and a little cheaper than the newer V4 Pro now.</p><p><strong>Key specs: 6 buttons | 35K DPI | 8,000 Hz | 70 g</strong><a class="view-deal button" href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5S/ref=sr_1_7_sspa" target="_blank" rel="nofollow" data-dimension112="8f407bc2-bb39-11f1-8631-a57dfb7e727f" data-action="Deal Block" data-label="Viper V3 Pro | Wireless" data-dimension48="Viper V3 Pro | Wireless" data-dimension25="$110.30">View Deal</a></p></div><h2 id="check-out-all-our-latest-deals-in-any-category">Check out all our latest deals in any category:</h2><div class="vizualizer-embed"><fc-author-commerce-widget data-fcaw-version="1" data-fcaw-full-bleed="false">  <style data-fcaw-host-protection>fc-author-commerce-widget[data-fcaw-version="1"] {  display: block !important;  width: 100% !important;  min-width: 0 !important;  max-width: none !important;  isolation: isolate !important;  contain: style !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]{  width: min(    1200px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1200px !important;  margin-left: var(    --fcaw-full-bleed-offset,    calc(50% - min(600px, 50vw))  ) !important;  margin-right: 0 !important;  position: relative !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]  #tg-df-spreadsheet-filters {  width: min(    1500px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1500px !important;  margin-left: calc(    (      100% -      min(1500px, var(--fcaw-viewport-width, 100vw))    ) / 2  ) !important;  margin-right: 0 !important;}fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::before,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::after {  box-sizing: border-box;}</style>  <div data-fcaw-fallback class="fcaw-v1-fallback">    <style>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with 'tg-df-' to prevent CMS style leakage.    */    .tg-df-container { user-select: text; -webkit-user-select: text;      container-type: inline-size;      container-name: tg-df;                  --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]    {      width: min(        1200px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1200px !important;      margin-left: calc(        (          100% -          min(1200px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;      position: relative !important;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]      #tg-df-spreadsheet-filters {      width: min(        1500px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1500px !important;      margin-left: calc(        (          100% -          min(1500px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;      position: relative;      z-index: 20;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      margin: 0 auto;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: var(--tg-df-blue);    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }        .tg-df-filters {      display: flex;      justify-content: center;      width: 100%;      gap: 12px;      margin: 0 auto;      max-width: 42rem;    }                 .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;      width: 100%;      max-width: 280px;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      width: 100%;      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }    .tg-df-scroll-btn {      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 4px;    }    .tg-df-scroll-btn.right {      right: 4px;    }    @container tg-df (max-width: 768px) {      .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;      margin: 0 auto;    }    .tg-df-filters {        justify-content: center;        width: 100%;        margin: 0 auto;        margin-bottom: -320px;        padding: 0 0 320px 0;        display: flex;        flex-wrap: nowrap;        gap: 8px;        overflow-x: auto;        overflow-y: hidden;        pointer-events: none;        scrollbar-width: none;        -webkit-overflow-scrolling: touch;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }      .tg-df-sort-wrapper {        pointer-events: auto;        flex: 0 0 auto;        width: 175px;        min-width: 175px;      }    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: calc(100% + 32px);      max-width: none;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;      margin: 0 -16px -16px -16px;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }    .tg-df-buying-guide-badge {      left: auto;      right: 12px;      max-width: calc(100% - 24px);      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges { position: absolute; bottom: 8px; left: 8px; display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 0; z-index: 10; }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-card-listings {      margin: 0 0 12px;    }    .tg-df-card-listings-title {      display: block;      color: var(--tg-df-text-muted);      font-size: 11px;      font-weight: 700;      letter-spacing: 0.45px;      line-height: 1.2;      margin-bottom: 4px;      text-transform: uppercase;    }    .tg-df-card-listings-links {      border-top: 1px solid var(--tg-df-border);    }    .tg-df-container .tg-df-card-listing-link {      align-items: center;      border-bottom: 1px solid var(--tg-df-border);      box-sizing: border-box;      color: var(--tg-df-blue);      display: flex;      font-size: 13px;      font-weight: 700;      justify-content: space-between;      line-height: 1.2;      min-height: 34px;      padding: 5px 2px;      text-decoration: none;    }    .tg-df-container .tg-df-card-listing-link::after {      content: '↗';      font-size: 14px;      font-weight: 600;      margin-left: 8px;    }    .tg-df-container .tg-df-card-listing-link:hover,    .tg-df-container .tg-df-card-listing-link:focus-visible {      background: #f8fafc;      color: var(--tg-df-blue);      outline: 2px solid var(--tg-df-blue);      outline-offset: -2px;      text-decoration: none;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: calc(100% + 32px);      max-width: none;      box-sizing: border-box;      background-color: var(--tg-df-blue);      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;      margin: 0 -16px -16px -16px;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      filter: brightness(0.85);    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 120px;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /* Optional mobile 2x2 filter grid */    .tg-df-mobile-2x2-container {      display: none;      width: 100%;      margin: 0 0 16px 0;      position: relative;      z-index: 30;    }    .tg-df-mobile-2x2-grid {      display: grid;      grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);      width: 100%;      border: 1px solid var(--tg-df-border, #e2e8f0);      background: var(--tg-df-bg, #ffffff);    }    .tg-df-container .tg-df-mobile-grid-cell {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      min-width: 0;      padding: 12px 14px;      font-family: inherit;      font-size: 11px;      font-weight: 600;      line-height: 1.2;      text-transform: uppercase;      letter-spacing: 0.5px;      text-align: left;      color: var(--tg-df-text-muted, #64748b);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-mobile-grid-cell > span {      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }    .tg-df-mobile-grid-cell > svg {      flex: 0 0 auto;      margin-left: 8px;      transition: transform 0.15s ease;    }    .tg-df-mobile-grid-cell > svg.is-open {      transform: rotate(180deg);    }    .tg-df-mobile-grid-cell {      border-bottom: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-grid-cell:nth-child(odd) {      border-right: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-2x2-grid--even .tg-df-mobile-grid-cell:nth-last-child(-n + 2) {      border-bottom: 0;    }    .tg-df-mobile-2x2-grid--odd .tg-df-mobile-grid-cell:last-child {      grid-column: 1 / -1;      border-right: 0;      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-grid-cell.active,    .tg-df-container .tg-df-mobile-grid-cell:hover {      background: var(--tg-df-bg-secondary, #f8fafc);      color: var(--tg-df-text, #0f172a);    }    .tg-df-container .tg-df-mobile-grid-cell.has-active-filter {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;    }    .tg-df-mobile-menu-drawer {      width: 100%;      max-height: 260px;      overflow-y: auto;      overscroll-behavior: contain;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-top: 0;      background: var(--tg-df-bg, #ffffff);      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);    }    .tg-df-container .tg-df-mobile-menu-item {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      width: 100%;      min-height: 42px;      padding: 12px 16px;      font-family: inherit;      font-size: 12px;      font-weight: 500;      line-height: 1.3;      text-align: left;      color: var(--tg-df-text, #0f172a);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-bottom: 1px solid #f1f5f9;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-container .tg-df-mobile-menu-item:last-child {      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-menu-item.selected {      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.08);      font-weight: 600;    }    .tg-df-container .tg-df-mobile-menu-item:hover {      background: var(--tg-df-bg-secondary, #f8fafc);    }    .tg-df-mobile-cell-badge {      display: inline-flex;      align-items: center;      justify-content: center;      padding: 2px 6px;      margin-left: 4px;      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.1);      border-radius: 9999px;      font-size: 10px;      font-weight: 700;    }    @container tg-df (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    @media (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    /* A non-full-bleed desktop embed is constrained to the article column.       Reuse the compact filter grid there instead of squeezing the rails. */    @container tg-df (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    @media (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-mobile-authors { gap: 16px !important; }      .tg-df-mobile-authors .tg-df-author-row-item { width: 56px !important; }      .tg-df-mobile-authors .tg-df-author-img-wrapper { width: 48px !important; height: 48px !important; }      .tg-df-mobile-authors .tg-df-author-brand-logo { width: 18px !important; height: 18px !important; bottom: -2px !important; right: -2px !important; }      .tg-df-mobile-authors .tg-df-author-row-name { font-size: 11px !important; }      .tg-df-mobile-authors .tg-df-author-row-role { font-size: 10px !important; }            .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-controls {        padding: 16px 0 8px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }                  .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;        width: auto;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 8px;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    @media (max-width: 599px) {      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;      width: 100vw;      max-width: 1200px;      position: relative;      left: 50%;      transform: translateX(-50%);    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }        .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: var(--tg-df-blue);      position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }      .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 14px;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }        .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;      scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }    .tg-df-container .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-scroll-left {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: rgba(255, 255, 255, 0.4);      color: var(--tg-df-blue);      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);      border: none;      cursor: pointer;      transition: background-color 0.2s;      margin-top: -4px;      z-index: 10;    }    .tg-df-container .tg-df-carousel-scroll-right {      right: 0;    }    .tg-df-container .tg-df-carousel-scroll-left {      left: 0;    }    .tg-df-container .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-scroll-left:hover {      background-color: rgba(255, 255, 255, 0.6);    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left {       height: 30px;       width: 30px;       background-color: rgba(255, 255, 255, 0.8);       box-shadow: 0 2px 4px rgba(0,0,0,0.1);       margin-top: 0;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left:hover {       background-color: white;    }    .tg-df-container .tg-df-grid-wrapper {       position: relative;    }    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-left {       background-color: white;       box-shadow: 0 4px 12px rgba(0,0,0,0.15);       top: 40%;       width: 44px;       height: 44px;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }            .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn {      display: inline-flex;      align-items: center;    }    .tg-df-container .tg-df-carousel-filter-btn:hover, .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      width: calc(100% + 24px);      border-radius: 0;      padding: 8px 10px;      margin: auto -12px -12px -12px;      background-color: var(--tg-df-blue);    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.40);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; padding-right: 12px; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @media (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }      .tg-df-container .hawk-deal-widget-title-product-title,      .tg-df-container .hawk-deal-widget-title-price,      .tg-df-container .hawk-deal-widget-title-retailer {        font-size: 14px !important;        line-height: 1.35 !important;        font-weight: 700 !important;      }      .tg-df-container .hawk-deal-widget-title-was-price {        font-size: 13px !important;        line-height: 1.35 !important;      }      .tg-df-container .hawk-deal-widget-text-body-main {        font-size: 14px !important;        line-height: 1.35 !important;        margin-bottom: 8px !important;      }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    /* BESPOKE AUTHOR HEADER STYLES - MAX ISOLATION PROTECTION */    .tg-df-author-embed {      width: 100% !important;      font-family: inherit !important;      background: transparent !important;      margin: 0 !important;      padding: 0 !important;      border: none !important;    }    .tg-df-author-section {      display: block !important;      width: 100% !important;      max-width: 100% !important;      opacity: 1 !important;      overflow: visible !important;      background: transparent !important;      border: none !important;      margin: 0 auto !important;      padding: 0 !important;      box-shadow: none !important;    }    .tg-df-author-card {      text-align: center !important;      padding: 1.75rem 1rem 1.25rem 1rem !important;      margin: 0 auto !important;      max-width: 48rem !important;      background: transparent !important;      border: none !important;      border-radius: 0 !important;      box-sizing: border-box !important;      box-shadow: none !important;    }    .tg-df-author-image {      width: 180px !important;      height: 180px !important;      border-radius: 50% !important;      object-fit: cover !important;      margin: 0 auto 0.75rem auto !important;      display: block !important;      border: none !important;      box-shadow: none !important;      max-width: 100% !important;    }    .tg-df-author-media-slot {      width: 100% !important;      height: 180px !important;      min-height: 180px !important;      margin: 0 auto 0.75rem auto !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;    }    .tg-df-author-media-slot .tg-df-author-image {      margin: 0 auto !important;    }    .tg-df-author-profile-image-wrapper {      position: relative !important;      width: 180px !important;      height: 180px !important;      margin: 0 auto 0.75rem auto !important;      flex: 0 0 auto !important;    }    .tg-df-author-profile-brand-logo {      position: absolute !important;      right: 12px !important;      bottom: 12px !important;      width: 42px !important;      height: 42px !important;      padding: 0 !important;      border: 3px solid var(--tg-df-bg, #fff) !important;      border-radius: 50% !important;      background: #000 !important;      object-fit: contain !important;      box-sizing: border-box !important;    }    .tg-df-author-curated-by {      font-size: 0.875rem !important;      color: #6B7280 !important;      font-style: normal !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      line-height: 1.4 !important;    }    .tg-df-author-name {      font-size: 2rem !important;      font-weight: 300 !important;      color: #111827 !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      line-height: 1.1 !important;      letter-spacing: -0.02em !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-role {      font-size: 0.9375rem !important;      font-weight: 500 !important;      color: var(--tg-df-blue, #1F69FF) !important;      margin: 0 0 1.25rem 0 !important;      padding: 0 !important;      line-height: 1.3 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-meta-slot {      width: 100% !important;      min-height: 88px !important;      display: flex !important;      flex-direction: column !important;      align-items: center !important;      justify-content: flex-start !important;    }    .tg-df-author-meta-slot--site {      padding-top: 1rem !important;    }    .tg-df-author-meta-slot--no-social {      min-height: 0 !important;    }    .tg-df-author-meta-slot--no-social .tg-df-author-role {      margin-bottom: 0.5rem !important;    }    .tg-df-author-social-links {      display: flex !important;      flex-wrap: wrap !important;      align-items: center !important;      justify-content: center !important;      gap: 1rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 !important;      max-width: 42rem !important;      width: 100% !important;      list-style: none !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-social-btn {      display: inline-flex !important;      align-items: center !important;      justify-content: center !important;      padding: 0 !important;      border-radius: 50% !important;      background-color: #f2f2f2 !important;      color: #111111 !important;      font-size: 0.8125rem !important;      font-weight: 500 !important;      text-decoration: none !important;      transition: all 0.2s ease !important;      border: 0 !important;      line-height: 1 !important;      box-shadow: none !important;      cursor: pointer !important;      outline: none !important;      margin: 0 !important;      height: 34px !important;      width: 34px !important;      min-width: 34px !important;      box-sizing: border-box !important;    }    .tg-df-author-social-btn:hover {      background-color: #dedede !important;      color: #111111 !important;      transform: translateY(-1px) !important;    }    .tg-df-author-social-btn > svg {      width: 19px !important;      height: 19px !important;      flex-shrink: 0 !important;      display: block !important;      margin: 0 !important;    }    .tg-df-author-social-btn[data-social-key="facebook"] > svg {      transform: scale(1.25) !important;    }    .tg-df-author-social-btn[data-social-key="pinterest"] > svg,    .tg-df-author-social-btn[data-social-key="tiktok"] > svg {      transform: scale(1.2) !important;    }    .tg-df-author-bio {      max-width: 42rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 0.5rem !important;      color: #4b5563 !important;      line-height: 1.6 !important;      font-weight: 300 !important;      font-size: 0.9375rem !important;      text-align: center !important;      background: none !important;      border: none !important;      border-radius: 0 !important;      box-shadow: none !important;      display: block !important;      height: auto !important;      overflow: visible !important;    }    .tg-df-author-bio-shell--stable {      width: 100% !important;      box-sizing: border-box !important;    }    .tg-df-author-bio--clamped {      min-height: 4.8em !important;      height: 4.8em !important;      max-height: 4.8em !important;      display: -webkit-box !important;      -webkit-box-orient: vertical !important;      -webkit-line-clamp: 3 !important;      overflow: hidden !important;    }    .tg-df-author-bio--expanded {      min-height: 4.8em !important;      height: auto !important;      max-height: none !important;      display: block !important;      overflow: visible !important;    }    .tg-df-author-bio--static,    .tg-df-author-bio--static:hover,    .tg-df-author-bio--static:focus,    .tg-df-author-bio--static:focus-visible {      outline: none !important;      box-shadow: none !important;      cursor: default !important;    }    .tg-df-author-bio-toggle-slot {      height: 28px !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;      margin: 0.125rem 0 0 !important;    }    .tg-df-author-bio-toggle {      appearance: none !important;      border: 0 !important;      border-bottom: 1px solid currentColor !important;      border-radius: 0 !important;      padding: 0.125rem 0 !important;      margin: 0 !important;      background: transparent !important;      color: #4b5563 !important;      box-shadow: none !important;      font: inherit !important;      font-size: 0.75rem !important;      font-weight: 600 !important;      line-height: 1.2 !important;      text-decoration: none !important;      text-transform: none !important;      cursor: pointer !important;    }    .tg-df-author-bio a {      color: var(--tg-df-blue, #1F69FF) !important;      text-decoration: underline !important;      font-weight: 400 !important;      background: none !important;      border: none !important;      padding: 0 !important;      margin: 0 !important;      border-radius: 0 !important;      display: inline !important;      box-shadow: none !important;    }    .tg-df-author-bio p,    .tg-df-author-bio div,    .tg-df-author-bio span {      margin: 0 !important;      padding: 0 !important;      color: inherit !important;      font: inherit !important;      line-height: inherit !important;      text-align: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-bio strong,    .tg-df-author-bio b {      font-weight: 600 !important;    }    .tg-df-author-bio em,    .tg-df-author-bio i {      font-style: italic !important;    }    @container tg-df (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @media (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @container tg-df (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @media (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }    @media (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }        .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button {      align-items: center; background-color: var(--tg-df-blue); box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;    }    .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button:hover { filter: brightness(0.85); text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }    .tg-df-active-badges-row {      display: flex;      flex-wrap: wrap;      gap: 8px;      align-items: center;      margin-top: 12px;      margin-bottom: 16px;      width: 100%;    }    .tg-df-active-badge {      display: inline-flex;      align-items: center;      gap: 6px;      padding: 8px 14px;      background-color: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border: 1px solid var(--tg-df-blue, #1f69ff);      border-radius: 0px;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;    }    .tg-df-badge-remove {      display: inline-flex;      align-items: center;      justify-content: center;      width: 16px;      height: 16px;      border-radius: 0px;      border: none;      background: rgba(255, 255, 255, 0.25);      color: #ffffff;      cursor: pointer;      padding: 0;      margin-left: 4px;      transition: background-color 0.15s, color 0.15s;    }    .tg-df-badge-remove:hover {      background: rgba(255, 255, 255, 0.45);      color: #ffffff;    }    .tg-df-badge-clear-all {      display: inline-flex;      align-items: center;      justify-content: center;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;      padding: 8px 14px;      color: var(--tg-df-text-muted, #64748b);      cursor: pointer;      background: #ffffff;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-radius: 0px;      transition: all 0.15s ease;    }    .tg-df-badge-clear-all:hover {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border-color: var(--tg-df-blue, #1f69ff);    }    .tg-df-savings-squad-header {      margin-bottom: 24px;      text-align: center;    }    .tg-df-banner-img-desktop {      display: block;      width: 100%;      height: auto;      margin-bottom: 32px;    }    .tg-df-banner-img-mobile {      display: none;      width: 100%;      height: auto;      margin-bottom: 32px;    }    @container tg-df (max-width: 600px) {      .tg-df-banner-img-desktop {        display: none;      }      .tg-df-banner-img-mobile {        display: block;      }    }    .tg-df-header-title {      font-size: 28px;      font-weight: 700;      color: var(--tg-df-text);      margin: 32px 0 12px 0;      line-height: 1.3;    }    .tg-df-header-subtitle {      font-size: 16px;      color: var(--tg-df-text-muted);      margin: 0 0 32px 0;      line-height: 1.5;    }    @container tg-df (max-width: 599px) {      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    @media (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    /* Article Intro Content Styling */    .tg-df-article-content {      font-size: 1rem;      line-height: 1.7;      color: #334155;    }    .tg-df-article-content p {      margin-bottom: 1.25rem;      line-height: 1.7;      font-size: 1rem;      color: #334155;    }    .tg-df-article-content > p:first-of-type::first-letter {      font-size: 3.25rem;      font-weight: 700;      float: left;      line-height: 0.85;      margin-right: 0.5rem;      margin-top: 0.15rem;      color: #0f172a;      font-family: inherit;    }    .tg-df-article-content a {      color: #0066cc;      text-decoration: underline;      font-weight: 500;    }    .tg-df-article-content a:hover {      color: #004499;    }    .tg-df-article-content strong, .tg-df-article-content b {      font-weight: 700;      color: #0f172a;    }    .tg-df-article-section-banner {      border-bottom: 2px solid #e6007e;      margin: 2.25rem 0 1.25rem 0;      position: relative;      clear: both;    }    .tg-df-article-section-banner span {      background-color: #e6007e;      color: #ffffff;      padding: 6px 16px;      font-weight: 700;      font-size: 0.875rem;      text-transform: uppercase;      letter-spacing: 0.05em;      display: inline-block;    }  </style><div class="tg-df-widget-host" data-vizualizer-embed="true" data-tg-df-full-bleed="false" data-tg-df-mobile-dropdowns="true" data-tg-df-sticky-mobile-filters="false" style="--tg-df-blue: #DC191B;"><div class="tg-df-container article-body" style="background-color: transparent;"><div id="tg-df-spreadsheet-filters" style="display: block; margin-bottom: 16px;"><div class="tg-df-categories-row-container" style="border-bottom: 1px solid var(--tg-df-border); position: relative;"><button aria-label="Scroll left" class="tg-df-scroll-btn left tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6"></path></svg></button><button aria-label="Scroll right" class="tg-df-scroll-btn right tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-categories-row" style="display: flex; overflow-x: auto; scrollbar-width: none;"><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Hardware <span style="color: var(--tg-df-blue); font-size: 10px;">66</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Monitors <span style="color: var(--tg-df-blue); font-size: 10px;">9</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming PCs <span style="color: var(--tg-df-blue); font-size: 10px;">7</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Mice <span style="color: var(--tg-df-blue); font-size: 10px;">6</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Headsets <span style="color: var(--tg-df-blue); font-size: 10px;">6</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Audio <span style="color: var(--tg-df-blue); font-size: 10px;">6</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">SSDs <span style="color: var(--tg-df-blue); font-size: 10px;">4</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Storage <span style="color: var(--tg-df-blue); font-size: 10px;">4</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Laptops <span style="color: var(--tg-df-blue); font-size: 10px;">4</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Controllers <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button></div></div></div><div class="tg-df-mobile-2x2-container"><div class="tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--odd"><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>CATEGORIES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>PRICES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell has-active-filter" aria-expanded="false"><span>DISCOUNTS (25%+)</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button></div></div><div class="tg-df-controls" id="tg-df-controls" style="display: flex; margin-top: 12px; margin-bottom: 16px; justify-content: center;"><div class="tg-df-filters-container" style="position: relative; width: 100%; max-width: 800px; margin: 0px auto;"><button class="tg-df-scroll-btn left" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 18l-6-6 6-6"></path></svg></button><button class="tg-df-scroll-btn right" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-filters"><div class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices"><option value="all">All Prices</option><option value="under50">Under $50</option><option value="50_100">$50 - $100</option><option value="100_200">$100 - $200</option><option value="200_500">$200 - $500</option><option value="over500">Over $500</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount"><option value="all">Any discount</option><option value="5">Min 5%</option><option value="10">Min 10%</option><option value="15">Min 15%</option><option value="20">Min 20%</option><option value="25">Min 25%</option><option value="30">Min 30%</option><option value="40">Min 40%</option><option value="50">Min 50%</option><option value="60">Min 60%</option><option value="70">Min 70%</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-review-sort-wrapper" style="display: none;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h16M7 12h10m-7 5h4"></path></svg><select class="tg-df-filter-select" id="tg-df-review-sort" aria-label="Sort Reviews"><option value="date_desc">Most recent</option><option value="rating_desc">Highest rating</option><option value="scored_first">Scored products first</option></select></div></div></div></div><div class="tg-df-active-badges-row" style="display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-top: 10px; margin-bottom: 16px;"><span class="tg-df-active-badge">Min 25% off<button type="button" class="tg-df-badge-remove" aria-label="Remove Min 25% off"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></span></div><div class="tg-df-grid-wrapper"><div class="tg-df-grid article-body tg-df-grid-auto" id="tg-df-grid"><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-0" data-merchant="Amazon" data-previous-price="34.99" data-price="25.99" data-product-name="G203 | Wired"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $9</span><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G203 | Wired" class="tg-df-card-image" loading="lazy" src="http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G203 | Wired"><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G203 | Wired</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed Price check:Best Buy $39.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>25.99</span></span><span class="tg-df-card-msrp">$34.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Glorious" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-0" data-merchant="Amazon" data-previous-price="59.99" data-price="26.31" data-product-name="GHS Eternal | 40 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $33.68</span><a href="https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="GHS Eternal | 40 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="GHS Eternal | 40 mm drivers"><a href="https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Glorious GHS Eternal | 40 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. Key specs: 40 mm drivers | 20 hz - 20 kHz | 255 g</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>26.31</span></span><span class="tg-df-card-msrp">$59.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-1" data-merchant="Amazon" data-previous-price="49.99" data-price="29.99" data-product-name="G305 Lightspeed | Wireless"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20</span><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G305 Lightspeed | Wireless" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G305 Lightspeed | Wireless"><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G305 Lightspeed | Wireless</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The Logitech G305 Lightspeed is our favorite budget wireless mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills. Key specs: Wireless | 12,000 DPI | Right-handed Price check: Best Buy $49.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>29.99</span></span><span class="tg-df-card-msrp">$49.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-86" data-merchant="Amazon" data-previous-price="49.99" data-price="29.99" data-product-name="G305 Lightspeed"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20</span><a href="https://www.amazon.com/dp/B07CMS5Q6P" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G305 Lightspeed" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G305 Lightspeed"><a href="https://www.amazon.com/dp/B07CMS5Q6P" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G305 Lightspeed</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Already reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason. Key specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>29.99</span></span><span class="tg-df-card-msrp">$49.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.amazon.com/dp/B07CMS5Q6P" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Razer" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-87" data-merchant="Bestbuy" data-previous-price="69.99" data-price="34.98" data-product-name="Basilisk V3"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $35.01</span><a href="https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Basilisk V3" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Basilisk V3"><a href="https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Razer Basilisk V3</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This mouse might be a few years old, but we scored it highly in our review in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to tempt even those who usually hate RGB lighting. Key specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>34.98</span></span><span class="tg-df-card-msrp">$69.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bestbuy</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-3" data-merchant="Amazon" data-previous-price="69.99" data-price="37.99" data-product-name="G502 Hero | Wired"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $32</span><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G502 Hero | Wired" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G502 Hero | Wired"><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G502 Hero | Wired</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. Key specs: Wired | 25,600 DPI | Right-handed Price check:Best Buy $69.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>37.99</span></span><span class="tg-df-card-msrp">$69.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Razer" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-80" data-merchant="Amazon" data-previous-price="59.99" data-price="39.79" data-product-name="BlackShark V2 X"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20.2</span><a href="https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="BlackShark V2 X" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/iyz3iXLiJcKt88PnaWDqFi.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="BlackShark V2 X"><a href="https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Razer BlackShark V2 X</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The Razer BlackShark V2 X is a remarkably good gaming headset, so much so that we'd say it was absolutely worth its full asking price, never mind the $20 discount you'll find here. Razer's 50 mm titanium drivers are nicely punchy and capable of plenty of volume without distortion, it's well-made, comfortable to wear all day, and the mic is pretty good, too. Plus, it's got a green cable, and we all know that pop of colour makes wired gaming headsets better by default. Key specs:50 mm drivers | Wired | Cardioid microphone</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>39.79</span></span><span class="tg-df-card-msrp">$59.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-1" data-merchant="Amazon" data-previous-price="79.99" data-price="39.99" data-product-name="G432 | 50 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $40</span><a href="https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G432 | 50 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/2tUAoKQRgcyuBATm2MWW8Y.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G432 | 50 mm drivers"><a href="https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G432 | 50 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Logitech has been cranking out decent budget gaming headsets for a while, but this one's actually more of a mid-range set with a very healthy discount. The black and blue colorway won't be for everyone, but with 7.1 surround sound, a flip-to-mute mic, and DTS Headphone:X 2.0 support, this is certainly a whole lot of headset for the cash. Key specs: 50 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $49.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>39.99</span></span><span class="tg-df-card-msrp">$79.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Razer" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-2" data-merchant="Amazon" data-previous-price="79.99" data-price="44.99" data-product-name="Kraken V4 X | 40 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $35</span><a href="https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Kraken V4 X | 40 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/oNZmqeexBrnWvrT2VvsYhe.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Kraken V4 X | 40 mm drivers"><a href="https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Razer Kraken V4 X | 40 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">If you're wondering why you might pay a little more than the Razer headsets above for, well, another Razer headset, the answer is comfort. Don't get me wrong, the BlackShark V2 X is a comfy thing to wear, but the plush, cushy memory foam cushions of the Kraken are well worth considering if you're looking for as much all-day usage as possible. It still sounds great, too. Key specs: 40 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $59.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>44.99</span></span><span class="tg-df-card-msrp">$79.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Turtle Beach" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-5" data-merchant="Amazon" data-previous-price="99.99" data-price="54.99" data-product-name="Burst II Air | Wireless"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $45</span><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Burst II Air | Wireless" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/oHpVvSDqMgFC5rnRe2pUnQ.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Burst II Air | Wireless"><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Turtle Beach Burst II Air | Wireless</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">We gave this mouse an 85% in our review, praising its very low weight, huge battery life, and super-responsive feel. It doesn't have quite as many fun extras as competitors and can be a bit of a fingerprint magnet, but it is a super solid choice at this price. Key specs: Wireless | 26,000 DPI | Symmetrical Price check:Best Buy $99.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>54.99</span></span><span class="tg-df-card-msrp">$99.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="HyperX" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-5" data-merchant="Amazon" data-previous-price="99.99" data-price="57.99" data-product-name="Cloud III | 53 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $42</span><a href="https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Cloud III | 53 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/WcvQLZ9svEqddBva629wu3.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Cloud III | 53 mm drivers"><a href="https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>HyperX Cloud III | 53 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">We found this headset to be very comfy in our review, with a balanced sound that still manages to keep a decent whack of bass. Our major drawback was the MSRP, but at $58 this set of cans is well worth a look. Key specs: 53 mm drivers | 15-25,000 Hz | Closed-back | Wired Price check: Best Buy $57.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>57.99</span></span><span class="tg-df-card-msrp">$99.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Nothing" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-15" data-merchant="Amazon" data-previous-price="79" data-price="59" data-product-name="Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20</span><a href="https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/LjJiAaeT6h5YZ9JGiq7c5Z.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)"><a href="https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Nothing Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">These earbuds might not be ideal just for gaming (their low-latency mode is pretty poor), but for listening to music and more casual gaming, they're great. They have a great sound profile, sit comfortably, and look pretty snazzy, too. Key specs: Bluetooth 5.4 | 42.5-hour battery life (9.5 from earbuds) | 20 Hz – 20 kHz frequency response</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>59</span></span><span class="tg-df-card-msrp">$79</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="KTC" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-40" data-merchant="Newegg" data-previous-price="99.99" data-price="62.49" data-product-name="H24V27"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $37.5</span><a href="https://www.newegg.com/p/3D4-007C-00016" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="H24V27" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/Zn2NZDLM6QnkGJ9n4JBG8E.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="H24V27"><a href="https://www.newegg.com/p/3D4-007C-00016" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>KTC H24V27</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This KTC pick is a budget pick, and it knows it. The 100 Hz refresh rate is just okay; a VA panel means less good viewing angles and color accuracy, but it's a solid enough gaming monitor, and the cheapest I'd actually recommend right now. Remember to use the code &quot;LDSF246&quot; for the full discount Key specs: 24-inch | 100 Hz | 1 ms | VA</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>62.49</span></span><span class="tg-df-card-msrp">$99.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.newegg.com/p/3D4-007C-00016" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Scuf" data-currency="$" data-deal-id="airedale-A97h9Ug45WeF5xPLdcoJyf-0" data-merchant="Amazon" data-previous-price="109.99" data-price="76.99" data-product-name="Valor Pro"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $33</span><a href="https://www.amazon.com/dp/B0DTB3QCS5" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Valor Pro" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Valor Pro"><a href="https://www.amazon.com/dp/B0DTB3QCS5" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Scuf Valor Pro</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">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. Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>76.99</span></span><span class="tg-df-card-msrp">$109.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jess Kinghorn" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="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" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jess Kinghorn</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 24 days ago</span></div></div></div></div><a href="https://www.amazon.com/dp/B0DTB3QCS5" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Acer" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-41" data-merchant="Newegg" data-previous-price="129.99" data-price="79.99" data-product-name="AOpen 24KG1Y X3bip"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $50</span><a href="https://www.newegg.com/p/N82E16824011533" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="AOpen 24KG1Y X3bip" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/fqL7czYaKKB7Rk7rmTQe5C.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="AOpen 24KG1Y X3bip"><a href="https://www.newegg.com/p/N82E16824011533" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Acer AOpen 24KG1Y X3bip</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a $50 discount, this is the highest refresh rate 1080p monitor you will find at its price point. It's also IPS, which offers better viewing angles and colours than VA and comes with a solid response time too. Key specs: 23.8-inch | 200 Hz | 0.5 ms | IPS</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>79.99</span></span><span class="tg-df-card-msrp">$129.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.newegg.com/p/N82E16824011533" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Asus" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-82" data-merchant="Amazon" data-previous-price="129.99" data-price="79.99" data-product-name="ROG Pelta"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $50</span><a href="https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="ROG Pelta" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/BvSb9rkRtpTSDDSBFEv84V.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="ROG Pelta"><a href="https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Asus ROG Pelta</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a strong battery life, super comfortable fit, and nice, airy materials, the Asus ROG Pelta is a bit of a belter. At its usual price, it's still a very good offering, but $45 off makes it an instant recommendation. Key specs: 2.4 GHz, Bluetooth, and USB-C connectivity | 90-hour battery life</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>79.99</span></span><span class="tg-df-card-msrp">$129.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-43" data-merchant="Bestbuy" data-previous-price="149.99" data-price="97.49" data-product-name="MAG 244F"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $52.5</span><a href="https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="MAG 244F" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/mYqdsr7LKubQtfmTBy5XL7.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="MAG 244F"><a href="https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI MAG 244F</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a hurtling-fast refresh rate and snappy response rate, this IPS panel from MSI is a solid competitive pick for just under $100. Key specs: 24-inch | 200 Hz | 0.5 ms | IPS</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>97.49</span></span><span class="tg-df-card-msrp">$149.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bestbuy</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-UBBZiFU9BXsLfvbZ8d4awf-1" data-merchant="Walmart" data-previous-price="149.99" data-price="99" data-product-name="MAG 255XFV"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $50.99</span><a href="https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="MAG 255XFV" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/SdhjSd7YdmiehGuzvXtiwU.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="MAG 255XFV"><a href="https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI MAG 255XFV</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">You might not like the VA panel and its low brightness, but you'll surely like the speed and price tag. 250 Hz, 0.5 ms pixel time, and adaptive sync will all help to ensure you get super-silky gaming. Key specs: 25-inch | 250 Hz | 0.5 ms | VA Price check: Best Buy OOS | Micro Centre OOS</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>99</span></span><span class="tg-df-card-msrp">$149.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/amazon-prime-day-gaming-monitor-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-load-more-control" style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1; overflow-anchor: none;"><button type="button" class="tg-df-tag-outline" aria-busy="false" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer;">Load More</button></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"Product","name":"G203 | Wired","image":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","description":"Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed Price check:Best Buy $39.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":25.99,"url":"https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":2,"item":{"@type":"Product","name":"GHS Eternal | 40 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png","description":"With a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. Key specs: 40 mm drivers | 20 hz - 20 kHz | 255 g","brand":{"@type":"Brand","name":"Glorious"},"offers":{"@type":"Offer","priceCurrency":"USD","price":26.31,"url":"https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":3,"item":{"@type":"Product","name":"G305 Lightspeed | Wireless","image":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","description":"The Logitech G305 Lightspeed is our favorite budget wireless mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills. Key specs: Wireless | 12,000 DPI | Right-handed Price check: Best Buy $49.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":29.99,"url":"https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":4,"item":{"@type":"Product","name":"G305 Lightspeed","image":"https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png","description":"Already reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason. Key specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":29.99,"url":"https://www.amazon.com/dp/B07CMS5Q6P","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":5,"item":{"@type":"Product","name":"Basilisk V3","image":"https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg","description":"This mouse might be a few years old, but we scored it highly in our review in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to tempt even those who usually hate RGB lighting. Key specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g","brand":{"@type":"Brand","name":"Razer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":34.98,"url":"https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS","seller":{"@type":"Organization","name":"Bestbuy"}}}},{"@type":"ListItem","position":6,"item":{"@type":"Product","name":"G502 Hero | Wired","image":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","description":"This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. Key specs: Wired | 25,600 DPI | Right-handed Price check:Best Buy $69.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":37.99,"url":"https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":7,"item":{"@type":"Product","name":"BlackShark V2 X","image":"https://cdn.mos.cms.futurecdn.net/iyz3iXLiJcKt88PnaWDqFi.jpg","description":"The Razer BlackShark V2 X is a remarkably good gaming headset, so much so that we'd say it was absolutely worth its full asking price, never mind the $20 discount you'll find here. Razer's 50 mm titanium drivers are nicely punchy and capable of plenty of volume without distortion, it's well-made, comfortable to wear all day, and the mic is pretty good, too. Plus, it's got a green cable, and we all know that pop of colour makes wired gaming headsets better by default. Key specs:50 mm drivers | Wired | Cardioid microphone","brand":{"@type":"Brand","name":"Razer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":39.79,"url":"https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":8,"item":{"@type":"Product","name":"G432 | 50 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/2tUAoKQRgcyuBATm2MWW8Y.jpg","description":"Logitech has been cranking out decent budget gaming headsets for a while, but this one's actually more of a mid-range set with a very healthy discount. The black and blue colorway won't be for everyone, but with 7.1 surround sound, a flip-to-mute mic, and DTS Headphone:X 2.0 support, this is certainly a whole lot of headset for the cash. Key specs: 50 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $49.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":39.99,"url":"https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":9,"item":{"@type":"Product","name":"Kraken V4 X | 40 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/oNZmqeexBrnWvrT2VvsYhe.jpg","description":"If you're wondering why you might pay a little more than the Razer headsets above for, well, another Razer headset, the answer is comfort. Don't get me wrong, the BlackShark V2 X is a comfy thing to wear, but the plush, cushy memory foam cushions of the Kraken are well worth considering if you're looking for as much all-day usage as possible. It still sounds great, too. Key specs: 40 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $59.99","brand":{"@type":"Brand","name":"Razer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":44.99,"url":"https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":10,"item":{"@type":"Product","name":"Burst II Air | Wireless","image":"https://cdn.mos.cms.futurecdn.net/oHpVvSDqMgFC5rnRe2pUnQ.jpg","description":"We gave this mouse an 85% in our review, praising its very low weight, huge battery life, and super-responsive feel. It doesn't have quite as many fun extras as competitors and can be a bit of a fingerprint magnet, but it is a super solid choice at this price. Key specs: Wireless | 26,000 DPI | Symmetrical Price check:Best Buy $99.99","brand":{"@type":"Brand","name":"Turtle Beach"},"offers":{"@type":"Offer","priceCurrency":"USD","price":54.99,"url":"https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":11,"item":{"@type":"Product","name":"Cloud III | 53 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/WcvQLZ9svEqddBva629wu3.jpg","description":"We found this headset to be very comfy in our review, with a balanced sound that still manages to keep a decent whack of bass. Our major drawback was the MSRP, but at $58 this set of cans is well worth a look. Key specs: 53 mm drivers | 15-25,000 Hz | Closed-back | Wired Price check: Best Buy $57.99","brand":{"@type":"Brand","name":"HyperX"},"offers":{"@type":"Offer","priceCurrency":"USD","price":57.99,"url":"https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":12,"item":{"@type":"Product","name":"Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)","image":"https://cdn.mos.cms.futurecdn.net/LjJiAaeT6h5YZ9JGiq7c5Z.png","description":"These earbuds might not be ideal just for gaming (their low-latency mode is pretty poor), but for listening to music and more casual gaming, they're great. They have a great sound profile, sit comfortably, and look pretty snazzy, too. Key specs: Bluetooth 5.4 | 42.5-hour battery life (9.5 from earbuds) | 20 Hz – 20 kHz frequency response","brand":{"@type":"Brand","name":"Nothing"},"offers":{"@type":"Offer","priceCurrency":"USD","price":59,"url":"https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":13,"item":{"@type":"Product","name":"H24V27","image":"https://cdn.mos.cms.futurecdn.net/Zn2NZDLM6QnkGJ9n4JBG8E.png","description":"This KTC pick is a budget pick, and it knows it. The 100 Hz refresh rate is just okay; a VA panel means less good viewing angles and color accuracy, but it's a solid enough gaming monitor, and the cheapest I'd actually recommend right now. Remember to use the code "LDSF246" for the full discount Key specs: 24-inch | 100 Hz | 1 ms | VA","brand":{"@type":"Brand","name":"KTC"},"offers":{"@type":"Offer","priceCurrency":"USD","price":62.49,"url":"https://www.newegg.com/p/3D4-007C-00016","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":14,"item":{"@type":"Product","name":"Valor Pro","image":"https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W.png","description":"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. Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks","brand":{"@type":"Brand","name":"Scuf"},"offers":{"@type":"Offer","priceCurrency":"USD","price":76.99,"url":"https://www.amazon.com/dp/B0DTB3QCS5","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":15,"item":{"@type":"Product","name":"AOpen 24KG1Y X3bip","image":"https://cdn.mos.cms.futurecdn.net/fqL7czYaKKB7Rk7rmTQe5C.png","description":"With a $50 discount, this is the highest refresh rate 1080p monitor you will find at its price point. It's also IPS, which offers better viewing angles and colours than VA and comes with a solid response time too. Key specs: 23.8-inch | 200 Hz | 0.5 ms | IPS","brand":{"@type":"Brand","name":"Acer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":79.99,"url":"https://www.newegg.com/p/N82E16824011533","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":16,"item":{"@type":"Product","name":"ROG Pelta","image":"https://cdn.mos.cms.futurecdn.net/BvSb9rkRtpTSDDSBFEv84V.jpg","description":"With a strong battery life, super comfortable fit, and nice, airy materials, the Asus ROG Pelta is a bit of a belter. At its usual price, it's still a very good offering, but $45 off makes it an instant recommendation. Key specs: 2.4 GHz, Bluetooth, and USB-C connectivity | 90-hour battery life","brand":{"@type":"Brand","name":"Asus"},"offers":{"@type":"Offer","priceCurrency":"USD","price":79.99,"url":"https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":17,"item":{"@type":"Product","name":"MAG 244F","image":"https://cdn.mos.cms.futurecdn.net/mYqdsr7LKubQtfmTBy5XL7.png","description":"With a hurtling-fast refresh rate and snappy response rate, this IPS panel from MSI is a solid competitive pick for just under $100. Key specs: 24-inch | 200 Hz | 0.5 ms | IPS","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":97.49,"url":"https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910","seller":{"@type":"Organization","name":"Bestbuy"}}}},{"@type":"ListItem","position":18,"item":{"@type":"Product","name":"MAG 255XFV","image":"https://cdn.mos.cms.futurecdn.net/SdhjSd7YdmiehGuzvXtiwU.jpg","description":"You might not like the VA panel and its low brightness, but you'll surely like the speed and price tag. 250 Hz, 0.5 ms pixel time, and adaptive sync will all help to ensure you get super-silky gaming. Key specs: 25-inch | 250 Hz | 0.5 ms | VA Price check: Best Buy OOS | Micro Centre OOS","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":99,"url":"https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174","seller":{"@type":"Organization","name":"Walmart"}}}}]}</script></div></div><div class="tg-df-modal-backdrop "><div class="tg-df-modal"><div class="tg-df-modal-header"><h3 class="tg-df-modal-title">Available Coupons & Deals</h3><button class="tg-df-modal-close"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div><div class="tg-df-modal-body"><div class="tg-df-message">No active vouchers found for .</div></div></div></div></div></div>  </div>  <script type="application/json" data-fcaw-config>{"authorBioLength":"short","authorFullBleed":false,"authorHandle":"all-authors","authorName":"All authors","backgroundColor":"transparent","customBio":"","discountAmount":"25","editorMode":false,"editorialMaxAgeMonths":"0","includeBuyingGuideProducts":false,"includeCollections":false,"includeDeals":true,"includeReviewProducts":false,"mobileDropdowns":true,"stickyMobileFilters":false,"offerType":"","preloadReviewInventory":false,"lightweightReviewDelivery":false,"hideHawkPrices":false,"prioritiseCommercialProducts":true,"priceRange":"all","productSelection":"mix","query":"","region":"auto","resultCount":"6","retailer":"","selectedBrands":[],"showAuthorBio":false,"showAuthorCounters":true,"showAuthorIdentity":false,"showAuthorRail":false,"showBrandRail":false,"showCategoryRail":true,"showCollectionsDropdown":false,"showPriceDiscountFilters":true,"showReviewSort":false,"showSocialButtons":false,"showCountdown":false,"showHeaderDetails":true,"showFreeformTagRail":false,"sort":"price_asc","viewMode":"author","website":"pcgamer","widgetSubtitle":"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.","widgetTitle":"Top Deals Handpicked by Our Editors","brands":[],"shortenedHeadlines":{},"compactEmbed":true}</script>  <script type="application/json" data-fcaw-preload>{"authors":[{"bioLong":"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.","bioShort":"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.","name":"James","fullName":"James Bentley","handle":"james-bentley","role":"Hardware writer","image":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","brandKey":"pcgamer"},{"bioLong":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","bioShort":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","name":"Dave","fullName":"Dave James","handle":"dave-james","role":"Editor-in-Chief, Hardware","image":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/not_the_gk","label":"X (Twitter)"},{"key":"email","href":"mailto:dave.james@futurenet.com","label":"Email"}]},{"bioLong":"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'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's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","bioShort":"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'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's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","name":"Jacob","fullName":"Jacob Fox","handle":"jacob-fox","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","brandKey":"pcgamer"},{"bioLong":"Andy built his first gaming PC at the tender age of 12, when IDE cables were a thing and high resolution wasn't. 26 years later (yes he's getting old), he now spends his days writing about and reviewing graphics cards, CPUs, keyboards, mice, gaming headsets and much, much more. You name it, if it's PC gaming hardware he'll write words about it, with opinions and everything.","bioShort":"Andy built his first gaming PC at the tender age of 12, when IDE cables were a thing and high resolution wasn't. 26 years later (yes he's getting old), he now spends his days writing about and reviewing graphics cards, CPUs, keyboards, mice, gaming headsets and much, much more. You name it, if it's PC gaming hardware he'll write words about it, with opinions and everything.","name":"Andy","fullName":"Andy Edser","handle":"andy-edser","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","brandKey":"pcgamer"},{"bioLong":"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'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.\u0026nbsp;","bioShort":"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'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.\u0026nbsp;","name":"Jess","fullName":"Jess Kinghorn","handle":"jess-kinghorn","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/KoeniginKatze","label":"X (Twitter)"},{"key":"linkedin","href":"https://www.linkedin.com/in/jess-kinghorn","label":"LinkedIn"}]}],"brands":[{"formatted_value":"Acer","count":13},{"formatted_value":"Samsung","count":12},{"formatted_value":"MSI","count":11},{"formatted_value":"Logitech","count":7},{"formatted_value":"HyperX","count":5},{"formatted_value":"LG","count":5},{"formatted_value":"Razer","count":4},{"formatted_value":"Yawyore","count":3},{"formatted_value":"Koorui","count":3},{"formatted_value":"ASRock","count":3},{"formatted_value":"Kingston","count":2},{"formatted_value":"Crucial","count":2},{"formatted_value":"Team Group","count":2},{"formatted_value":"Lenovo","count":2},{"formatted_value":"Skytech","count":2},{"formatted_value":"Gigabyte","count":2},{"formatted_value":"Asus","count":2},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Glorious","count":1},{"formatted_value":"Nothing","count":1},{"formatted_value":"HP","count":1},{"formatted_value":"KTC","count":1},{"formatted_value":"Innocn","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1}],"activeDealTag":null,"activeFreeformTag":null,"activeFreeformTags":[],"couponMap":{"Amazon":"has","Bestbuy":"none","Newegg":"none","Walmart":"none"},"totalAuthorCount":5,"totalDealCount":56,"tagCounts":{"Gaming Mice":6,"Hardware":66,"Gaming Headsets":6,"Gaming Audio":6,"SSDs":4,"Storage":4,"Gaming Laptops":4,"Gaming PCs":7,"Gaming Monitors":9,"Controllers":1},"tags":["Hardware","Gaming Monitors","Gaming PCs","Gaming Mice","Gaming Headsets","Gaming Audio","SSDs","Storage","Gaming Laptops","Controllers"],"freeformTagCounts":{"hardware":66,"mouse":6,"gaming-mouse":6,"prime-day":6,"amazon-prime-day-2026":12,"amazon-prime-day":30,"prime-day-deals":24,"deals":31,"deal":32,"big-deal-days":30,"gaming-headset":6,"amazon-prime":18,"ssd":4,"pc-deals":18,"gaming-laptops":4,"intel":6,"nvidia":4,"radeon":2,"gaming-pc":3,"gaming-monitor":9,"ryzen":2,"monitors":8,"solid-state-drive":4,"solid-state":4,"hdd":4,"hard-drive":4,"storage":4,"gaming-laptop":4,"budget":4,"cheap":4,"labor-day":38,"gaming-pc-deals":1,"collections":1,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"monitor":1,"monitor-deals":1,"4k-monitor":1,"gaming-monitor-deal":1,"4k":1,"4k-gaming":1,"acer":1},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"amazon-prime-day","label":"Amazon Prime Day","requestValue":"Amazon Prime Day"},{"handle":"big-deal-days","label":"Big Deal Days","requestValue":"Big Deal Days"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"amazon-prime-day-2026","label":"Amazon Prime Day 2026","requestValue":"Amazon Prime Day 2026"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"mouse","label":"mouse","requestValue":"mouse"},{"handle":"gaming-mouse","label":"gaming mouse","requestValue":"gaming mouse"},{"handle":"prime-day","label":"Prime Day","requestValue":"Prime Day"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"gaming-laptops","label":"gaming laptops","requestValue":"gaming laptops"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"radeon","label":"Radeon","requestValue":"Radeon"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"acer","label":"Acer","requestValue":"Acer"}],"reviewInventoryBaked":false,"regionalDealManifests":{"US":[{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-0","url":"https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/","image":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","fallbackImage":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","title":"G203 | Wired","brand":"Logitech","productName":"G203 | Wired","merchant":"Amazon","rawPrice":25.99,"rawMsrp":34.99,"price":"25.99","msrp":"34.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $9","savingType":"amount","isPrime":false,"starRating":null,"description":"Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed Price check:Best Buy $39.99","text":"\u003cp\u003ePerfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 8,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check:\u003c/strong\u003e\u003ca href=\"https://www.bestbuy.com/site/logitech-g203-lightsync-wired-optical-gaming-mouse-with-8000-dpi-sensor-white/6409362.p?skuId=6409362\" target=\"_blank\"\u003eBest Buy $39.99\u003c/a\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-0","url":"https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1","image":"https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png","title":"GHS Eternal | 40 mm drivers","brand":"Glorious","productName":"GHS Eternal | 40 mm drivers","merchant":"Amazon","rawPrice":26.31,"rawMsrp":59.99,"price":"26.31","msrp":"59.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $33.68","savingType":"amount","isPrime":false,"starRating":null,"description":"With a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. Key specs: 40 mm drivers | 20 hz - 20 kHz | 255 g","text":"\u003cp\u003eWith a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20 hz - 20 kHz | 255 g\u003c/strong\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-1","url":"https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1","image":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","title":"G305 Lightspeed | Wireless","brand":"Logitech","productName":"G305 Lightspeed | Wireless","merchant":"Amazon","rawPrice":29.99,"rawMsrp":49.99,"price":"29.99","msrp":"49.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $20","savingType":"amount","isPrime":false,"starRating":null,"description":"The Logitech G305 Lightspeed is our favorite budget wireless mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills. Key specs: Wireless | 12,000 DPI | Right-handed Price check: Best Buy $49.99","text":"\u003cp\u003eThe Logitech G305 Lightspeed is our\u003ca href=\"https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse\" target=\"_blank\"\u003e favorite budget wireless mouse\u003c/a\u003e—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wireless | 12,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check: \u003c/strong\u003e\u003ca href=\"https://www.bestbuy.com/product/logitech-g305-lightspeed-wireless-optical-6-programmable-button-gaming-mouse-with-12000-dpi-hero-sensor-wireless-white/J7H7ZY2ZYR\" target=\"_blank\"\u003eBest Buy $49.99\u003c/a\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-vCxWr8kxLPhtdqNjq9cgjZ-86","url":"https://www.amazon.com/dp/B07CMS5Q6P","image":"https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png","title":"G305 Lightspeed","brand":"Logitech","productName":"G305 Lightspeed","merchant":"Amazon","rawPrice":29.99,"rawMsrp":49.99,"price":"29.99","msrp":"49.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $20","savingType":"amount","isPrime":false,"starRating":null,"description":"Already reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason. Key specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life","text":"\u003cp\u003eAlready reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life\u003c/strong\u003e\u003c/p\u003e","authorName":"James Bentley","authorRole":"Hardware writer","authorImage":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","documentUrl":"labor-day-pc-gaming-deals","modifiedDate":"2026-09-07T11:22:09Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-vCxWr8kxLPhtdqNjq9cgjZ-87","url":"https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS","image":"https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg","title":"Basilisk V3","brand":"Razer","productName":"Basilisk V3","merchant":"Bestbuy","rawPrice":34.98,"rawMsrp":69.99,"price":"34.98","msrp":"69.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $35.01","savingType":"amount","isPrime":false,"starRating":null,"description":"This mouse might be a few years old, but we scored it highly in our review in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to tempt even those who usually hate RGB lighting. Key specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g","text":"\u003cp\u003eThis mouse might be a few years old, but we scored it highly in \u003ca href=\"https://www.pcgamer.com/razer-basilisk-v3-gaming-mouse-review/\" target=\"_blank\"\u003eour review\u003c/a\u003e in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to \u003ca href=\"https://www.pcgamer.com/hardware/im-ashamed-to-say-that-this-razer-mouse-has-made-me-actually-take-a-shine-to-rgb-and-now-you-can-be-persuaded-too-for-almost-50-percent-off/\" target=\"_blank\"\u003etempt even those who usually hate RGB lighting\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g\u003c/strong\u003e\u003c/p\u003e","authorName":"James Bentley","authorRole":"Hardware writer","authorImage":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","documentUrl":"labor-day-pc-gaming-deals","modifiedDate":"2026-09-07T11:22:09Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-3","url":"https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/","image":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","title":"G502 Hero | Wired","brand":"Logitech","productName":"G502 Hero | Wired","merchant":"Amazon","rawPrice":37.99,"rawMsrp":69.99,"price":"37.99","msrp":"69.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $32","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. Key specs: Wired | 25,600 DPI | Right-handed Price check:Best Buy $69.99","text":"\u003cp\u003eThis is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 25,600 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check:\u003c/strong\u003e\u003ca href=\"https://www.bestbuy.com/site/logitech-g502-hero-wired-optical-gaming-mouse-with-rgb-lighting-black/6265133.p?skuId=6265133\" target=\"_blank\"\u003eBest Buy $69.99\u003c/a\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true}],"GB":[{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-10","url":"https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/","image":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","fallbackImage":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","title":"G203 | Wired","brand":"Logitech","productName":"G203 | Wired","merchant":"Amazon","rawPrice":19.99,"rawMsrp":30.99,"price":"19.99","msrp":"30.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £11","savingType":"amount","isPrime":false,"starRating":null,"description":"Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed","text":"\u003cp\u003ePerfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 8,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-11","url":"https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ","image":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","title":"G305 Lightspeed | Wireless","brand":"Logitech","productName":"G305 Lightspeed | Wireless","merchant":"Amazon","rawPrice":19.99,"rawMsrp":27.99,"price":"19.99","msrp":"27.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £8","savingType":"amount","isPrime":false,"starRating":null,"description":"The Logitech G305 Lightspeed is our favorite wireless budget mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills in time for the holidays. Key specs: Wireless | 12,000 DPI | Right-handed","text":"\u003cp\u003eThe Logitech G305 Lightspeed is our\u003ca href=\"https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse\" target=\"_blank\"\u003e favorite wireless budget mouse\u003c/a\u003e—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills in time for the holidays.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wireless | 12,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-19","url":"https://www.amazon.co.uk/JBL-Quantum-Gaming-Wired-Over-ear-Black/dp/B083X24CFF/","image":"https://cdn.mos.cms.futurecdn.net/QpbyfGXi5wHEk3EUKrQ3cb.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/QpbyfGXi5wHEk3EUKrQ3cb.jpg","title":"Quantum 100 | 40 mm drivers","brand":"JBL","productName":"Quantum 100 | 40 mm drivers","merchant":"Amazon","rawPrice":19.99,"rawMsrp":29.99,"price":"19.99","msrp":"29.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £10","savingType":"amount","isPrime":false,"starRating":null,"description":"JBL has a reputation for good audio quality, and this headset is hard to argue with at this price. Featuring JBL's \u0026quot;Quantum Sound Signature\u0026quot;, memory foam ear cushions and a good quality detachable boom microphone, it's difficult to think of a better value headset for the money. Key specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired","text":"\u003cp\u003eJBL has a reputation for good audio quality, and this headset is hard to argue with at this price. Featuring JBL's \u0026quot;Quantum Sound Signature\u0026quot;, memory foam ear cushions and a good quality detachable boom microphone, it's difficult to think of a better value headset for the money.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired\u003c/strong\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-12","url":"https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/","image":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","title":"G502 Hero | Wired","brand":"Logitech","productName":"G502 Hero | Wired","merchant":"Amazon","rawPrice":22.01,"rawMsrp":37.79,"price":"22.01","msrp":"37.79","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £15.78","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a tried and tested Logitech gaming mouse, with an astonishing amount of customisation potential. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customisable buttons with onboard memory, and even comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. The two main buttons use mechanical switch tensioning to make every click feel satisfying, and the programmable RGB lighting finishes off this comprehensive package of gaming mouse goodness. Key specs: Wired | 25,600 DPI | Right-handed","text":"\u003cp\u003eThis is a tried and tested Logitech gaming mouse, with an astonishing amount of customisation potential. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customisable buttons with onboard memory, and even comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. The two main buttons use mechanical switch tensioning to make every click feel satisfying, and the programmable RGB lighting finishes off this comprehensive package of gaming mouse goodness.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 25,600 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-23","url":"https://www.amazon.co.uk/Logitech-LIGHTSPEED-Wireless-Bluetooth-Nintendo/dp/B0FL7NNGRG?th=1","image":"https://cdn.mos.cms.futurecdn.net/jMLjXCziHPvivaafPHDC6Z.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/jMLjXCziHPvivaafPHDC6Z.jpg","title":"G321 Lightspeed | 40 mm drivers","brand":"Logitech","productName":"G321 Lightspeed | 40 mm drivers","merchant":"Amazon","rawPrice":32.99,"rawMsrp":59.99,"price":"32.99","msrp":"59.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £27","savingType":"amount","isPrime":false,"starRating":null,"description":"This very lightweight, very comfortable headset has a balanced sound profile to match, as our James found in his review. It won't blow you away with bass or features, but at this price it's still worth considering. Key specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wireless Price check: Currys £42.99","text":"\u003cp\u003eThis very lightweight, very comfortable headset has a balanced sound profile to match, as our James found in \u003ca href=\"https://www.pcgamer.com/hardware/gaming-headsets/logitech-g321-lightspeed-review/\" target=\"_blank\"\u003ehis review\u003c/a\u003e. It won't blow you away with bass or features, but at this price it's still worth considering.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wireless \u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check: \u003c/strong\u003e\u003ca href=\"https://www.currys.co.uk/products/logitech-g321-lightspeed-wireless-bluetooth-gaming-headset-black-10289632.html\" target=\"_blank\"\u003eCurrys £42.99\u003c/a\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-20","url":"https://www.amazon.co.uk/Logitech-Microphone-Comfortable-Lightweight-PlayStation/dp/B07W6J6TG5/","image":"https://cdn.mos.cms.futurecdn.net/4zYtRMX5cd9pAbB5K6yiNa.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/4zYtRMX5cd9pAbB5K6yiNa.jpg","title":"G335 | 40 mm drivers","brand":"Logitech","productName":"G335 | 40 mm drivers","merchant":"Amazon","rawPrice":34.99,"rawMsrp":64.99,"price":"34.99","msrp":"64.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £30","savingType":"amount","isPrime":false,"starRating":null,"description":"This Logitech headset is a lightweight marvel with memory foam earphone pads and a refined yet colourful aesthetic. The 40mm neodymium drivers are well-rounded and it comes with a handy in-line volume control on its extra-long wire. The microphone is nothing to write home about, but for this price these make an excellent entry-level set of cans. Key specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired Price check: Currys £34.99","text":"\u003cp\u003eThis Logitech headset is a lightweight marvel with memory foam earphone pads and a refined yet colourful aesthetic. The 40mm neodymium drivers are well-rounded and it comes with a handy in-line volume control on its extra-long wire. The microphone is nothing to write home about, but for this price these make an excellent entry-level set of cans.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check: \u003c/strong\u003e\u003ca href=\"https://www.currys.co.uk/products/logitech-g335-gaming-headset-black-10227173.html\" target=\"_blank\"\u003eCurrys £34.99\u003c/a\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true}],"AU":[{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-5","url":"https://www.amazon.com.au/JBL-QuantumSOUND-Signature-Comfortable-Breathable/dp/B0D6NLHV8N","image":"https://cdn.mos.cms.futurecdn.net/cvnYTUETxZSPZrZFK8PUMG.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/cvnYTUETxZSPZrZFK8PUMG.jpg","title":"Quantum 100M2","brand":"JBL","productName":"Quantum 100M2","merchant":"Amazon","rawPrice":29,"rawMsrp":59.95,"price":"29","msrp":"59.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$30.95","savingType":"amount","isPrime":false,"starRating":null,"description":"If you're hell bent on keeping costs low, JBL’s Quantum 100M2 is cheap as chips—especially if you happen to be buying AU$29 worth of chips. These aren't fancy but they do work, with a boom mic, breathable ear cushions, and a stripped-back design.","text":"\u003cp\u003eIf you're hell bent on keeping costs low, JBL’s Quantum 100M2 is cheap as chips—especially if you happen to be buying AU$29 worth of chips. These aren't fancy but they do work, with a boom mic, breathable ear cushions, and a stripped-back design.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-1","url":"https://www.amazon.com.au/dp/B0CMCPY4VG","image":"https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR.jpg","title":"Nova Lite","brand":"GameSir","productName":"Nova Lite","merchant":"Amazon","rawPrice":32,"rawMsrp":45,"price":"32","msrp":"45","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$13","savingType":"amount","isPrime":false,"starRating":null,"description":"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.","text":"\u003cp\u003eOur 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.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-15","url":"https://www.amazon.com.au/dp/B07MG5547J","image":"https://cdn.mos.cms.futurecdn.net/CpEke9LRsjxAHdxrhG7A8X.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/CpEke9LRsjxAHdxrhG7A8X.jpg","title":"G502 Hero","brand":"Logitech","productName":"G502 Hero","merchant":"Amazon","rawPrice":55.99,"rawMsrp":149.95,"price":"55.99","msrp":"149.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$93.96","savingType":"amount","isPrime":false,"starRating":null,"description":"Logitech's 502 series is extremely well regarded, and this Hero version saw an upgrade to the sensor. They're famed for their reliability and flawless operation. They also look glorious, eschewing today's minimalist looks for a statement that says \u0026quot;that's right, I'm dangerous.\u0026quot;","text":"\u003cp\u003eLogitech's 502 series is extremely well regarded, and this Hero version saw an upgrade to the sensor. They're famed for their reliability and flawless operation. They also look glorious, eschewing today's minimalist looks for a statement that says \u0026quot;that's right, I'm dangerous.\u0026quot;\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-8","url":"https://www.amazon.com.au/CORSAIR-Membrane-Wired-Gaming-Keyboard/dp/B0CP6BR96G","image":"https://cdn.mos.cms.futurecdn.net/hCzSayyAe4ZYCjzREFjJYF.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/hCzSayyAe4ZYCjzREFjJYF.jpg","title":"K55 Core Membrane","brand":"Corsair","productName":"K55 Core Membrane","merchant":"Amazon","rawPrice":59,"rawMsrp":79.95,"price":"59","msrp":"79.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$20.95","savingType":"amount","isPrime":false,"starRating":null,"description":"This discount makes an affordable keyboard much more so, dipping it into impulse buy territory. Membrane keyboards aren't for everyone - they lack the gratifying tactility of their mechanical siblings—but if you like 'em, or are curious, this is a trick. It's a wired affair with ten-zone RGB, spill resistance, and—naturally unusually quiet button presses.","text":"\u003cp\u003eThis discount makes an affordable keyboard much more so, dipping it into impulse buy territory. Membrane keyboards aren't for everyone - they lack the gratifying tactility of their mechanical siblings—but if you like 'em, or are curious, this is a trick. It's a wired affair with ten-zone RGB, spill resistance, and—naturally unusually quiet button presses.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-11","url":"https://www.amazon.com.au/dp/B01K48R5V4","image":"https://cdn.mos.cms.futurecdn.net/ZcBJ4EUisHsNDt77uYcuWK.webp","fallbackImage":"https://cdn.mos.cms.futurecdn.net/ZcBJ4EUisHsNDt77uYcuWK.webp","title":"G G213 Prodigy","brand":"Logitech","productName":"G G213 Prodigy","merchant":"Amazon","rawPrice":72,"rawMsrp":129.95,"price":"72","msrp":"129.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$57.95","savingType":"amount","isPrime":false,"starRating":null,"description":"If you fancy a new keyboard but are averse to spending more than AU$100, this Logitech slab will prove mighty irresistible. We haven't reviewed it, but we've tested tonnes of great Logitech gear, and at this price you're getting some great features including \u0026quot;spill resistance\u0026quot; and the full RGB experience.","text":"\u003cp\u003eIf you fancy a new keyboard but are averse to spending more than AU$100, this Logitech slab will prove mighty irresistible. We haven't reviewed it, but we've tested tonnes of great Logitech gear, and at this price you're getting some great features including \u0026quot;spill resistance\u0026quot; and the full RGB experience.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-13","url":"https://www.amazon.com.au/CORSAIR-Sabre-Ultralight-Wireless-Gaming/dp/B0FKJ2J2R8/","image":"https://cdn.mos.cms.futurecdn.net/cW72DJwAyNRGpScgFDYEWg.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/cW72DJwAyNRGpScgFDYEWg.jpg","title":"Sabre v2 Pro","brand":"Corsair","productName":"Sabre v2 Pro","merchant":"Amazon","rawPrice":79,"rawMsrp":169,"price":"79","msrp":"169","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$90","savingType":"amount","isPrime":false,"starRating":null,"description":"The Corsair Sabre V2 Pro is one of PC Gamer's best reviewed gaming mice of 2025. Jacob Fox loved its near-impossible lightness (36g!), app-free ease of use, brilliant sensor and robust build, though didn't like that it can only store one onboard profile. Look at the specs: 8,000Hz Hyper-Polling, 33,000 DPI, and up to 70 hours of battery life.","text":"\u003cp\u003eThe Corsair Sabre V2 Pro is one of PC Gamer's best reviewed gaming mice of 2025. Jacob Fox \u003ca href=\"https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/\"\u003eloved\u003c/a\u003e its near-impossible lightness (36g!), app-free ease of use, brilliant sensor and robust build, though didn't like that it can only store one onboard profile. Look at the specs: 8,000Hz Hyper-Polling, 33,000 DPI, and up to 70 hours of battery life. \u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true}]},"regionalDealRailData":{"US":{"brands":[{"formatted_value":"Acer","count":13},{"formatted_value":"Samsung","count":12},{"formatted_value":"MSI","count":11},{"formatted_value":"Logitech","count":7},{"formatted_value":"HyperX","count":5},{"formatted_value":"LG","count":5},{"formatted_value":"Razer","count":4},{"formatted_value":"Yawyore","count":3},{"formatted_value":"Koorui","count":3},{"formatted_value":"ASRock","count":3},{"formatted_value":"Kingston","count":2},{"formatted_value":"Crucial","count":2},{"formatted_value":"Team Group","count":2},{"formatted_value":"Lenovo","count":2},{"formatted_value":"Skytech","count":2},{"formatted_value":"Gigabyte","count":2},{"formatted_value":"Asus","count":2},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Glorious","count":1},{"formatted_value":"Nothing","count":1},{"formatted_value":"HP","count":1},{"formatted_value":"KTC","count":1},{"formatted_value":"Innocn","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1}],"freeformTagCounts":{"hardware":66,"mouse":6,"gaming-mouse":6,"prime-day":6,"amazon-prime-day-2026":12,"amazon-prime-day":30,"prime-day-deals":24,"deals":31,"deal":32,"big-deal-days":30,"gaming-headset":6,"amazon-prime":18,"ssd":4,"pc-deals":18,"gaming-laptops":4,"intel":6,"nvidia":4,"radeon":2,"gaming-pc":3,"gaming-monitor":9,"ryzen":2,"monitors":8,"solid-state-drive":4,"solid-state":4,"hdd":4,"hard-drive":4,"storage":4,"gaming-laptop":4,"budget":4,"cheap":4,"labor-day":38,"gaming-pc-deals":1,"collections":1,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"monitor":1,"monitor-deals":1,"4k-monitor":1,"gaming-monitor-deal":1,"4k":1,"4k-gaming":1,"acer":1},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"amazon-prime-day","label":"Amazon Prime Day","requestValue":"Amazon Prime Day"},{"handle":"big-deal-days","label":"Big Deal Days","requestValue":"Big Deal Days"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"amazon-prime-day-2026","label":"Amazon Prime Day 2026","requestValue":"Amazon Prime Day 2026"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"mouse","label":"mouse","requestValue":"mouse"},{"handle":"gaming-mouse","label":"gaming mouse","requestValue":"gaming mouse"},{"handle":"prime-day","label":"Prime Day","requestValue":"Prime Day"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"gaming-laptops","label":"gaming laptops","requestValue":"gaming laptops"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"radeon","label":"Radeon","requestValue":"Radeon"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"acer","label":"Acer","requestValue":"Acer"}],"tagCounts":{"Gaming Mice":6,"Hardware":66,"Gaming Headsets":6,"Gaming Audio":6,"SSDs":4,"Storage":4,"Gaming Laptops":4,"Gaming PCs":7,"Gaming Monitors":9,"Controllers":1},"tags":["Hardware","Gaming Monitors","Gaming PCs","Gaming Mice","Gaming Headsets","Gaming Audio","SSDs","Storage","Gaming Laptops","Controllers"],"totalAuthorCount":5,"totalDealCount":56},"GB":{"brands":[{"formatted_value":"Logitech","count":6},{"formatted_value":"Steelseries","count":2},{"formatted_value":"EarFun","count":2},{"formatted_value":"Lexar","count":2},{"formatted_value":"AOC","count":2},{"formatted_value":"MSI","count":2},{"formatted_value":"JBL","count":1},{"formatted_value":"Razer","count":1},{"formatted_value":"HyperX","count":1},{"formatted_value":"Turtle Beach","count":1}],"freeformTagCounts":{"hardware":17,"mouse":5,"gaming-mouse":5,"prime-day":5,"amazon-prime-day-2026":14,"amazon-prime-day":17,"prime-day-deals":8,"deals":17,"deal":17,"big-deal-days":17,"gaming-headset":9,"amazon-prime":3,"ssd":1,"pc-deals":3,"gaming-monitor":2,"monitors":2,"solid-state-drive":1,"solid-state":1,"hdd":1,"hard-drive":1,"storage":1},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"amazon-prime-day","label":"Amazon Prime Day","requestValue":"Amazon Prime Day"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"big-deal-days","label":"Big Deal Days","requestValue":"Big Deal Days"},{"handle":"amazon-prime-day-2026","label":"Amazon Prime Day 2026","requestValue":"Amazon Prime Day 2026"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"},{"handle":"mouse","label":"mouse","requestValue":"mouse"},{"handle":"gaming-mouse","label":"gaming mouse","requestValue":"gaming mouse"},{"handle":"prime-day","label":"Prime Day","requestValue":"Prime Day"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"}],"tagCounts":{"Gaming Mice":5,"Hardware":17,"Gaming Headsets":9,"Gaming Audio":9,"SSDs":1,"Storage":1,"Gaming Monitors":2},"tags":["Hardware","Gaming Headsets","Gaming Audio","Gaming Mice","Gaming Monitors","SSDs","Storage"],"totalAuthorCount":4,"totalDealCount":17},"AU":{"brands":[{"formatted_value":"Logitech","count":7},{"formatted_value":"Corsair","count":4},{"formatted_value":"JBL","count":2},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"GameSir","count":1},{"formatted_value":"8BitDo","count":1},{"formatted_value":"HyperX","count":1},{"formatted_value":"Asus","count":1},{"formatted_value":"Razer","count":1},{"formatted_value":"SteelSeries","count":1}],"freeformTagCounts":{"hardware":20,"amazon-prime":20,"pc-deals":20,"deals":20,"prime-day-deals":20},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"}],"tagCounts":{"Hardware":20},"tags":["Hardware"],"totalAuthorCount":1,"totalDealCount":20}}}</script></fc-author-commerce-widget><script>(()=>{var Z1=Object.create;var cg=Object.defineProperty;var W1=Object.getOwnPropertyDescriptor;var I1=Object.getOwnPropertyNames;var J1=Object.getPrototypeOf,$1=Object.prototype.hasOwnProperty;var un=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var eb=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of I1(t))!$1.call(e,l)&&l!==n&&cg(e,l,{get:()=>t[l],enumerable:!(a=W1(t,l))||a.enumerable});return e};var B=(e,t,n)=>(n=e!=null?Z1(J1(e)):{},eb(t||!e||!e.__esModule?cg(n,"default",{value:e,enumerable:!0}):n,e));var Ag=un(z=>{"use strict";var Tc=Symbol.for("react.transitional.element"),tb=Symbol.for("react.portal"),nb=Symbol.for("react.fragment"),ab=Symbol.for("react.strict_mode"),lb=Symbol.for("react.profiler"),ib=Symbol.for("react.consumer"),rb=Symbol.for("react.context"),ob=Symbol.for("react.forward_ref"),ub=Symbol.for("react.suspense"),cb=Symbol.for("react.memo"),mg=Symbol.for("react.lazy"),sb=Symbol.for("react.activity"),sg=Symbol.iterator;function db(e){return e===null||typeof e!="object"?null:(e=sg&&e[sg]||e["@@iterator"],typeof e=="function"?e:null)}var hg={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},pg=Object.assign,yg={};function ml(e,t,n){this.props=e,this.context=t,this.refs=yg,this.updater=n||hg}ml.prototype.isReactComponent={};ml.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};ml.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function vg(){}vg.prototype=ml.prototype;function Ec(e,t,n){this.props=e,this.context=t,this.refs=yg,this.updater=n||hg}var Dc=Ec.prototype=new vg;Dc.constructor=Ec;pg(Dc,ml.prototype);Dc.isPureReactComponent=!0;var dg=Array.isArray;function Rc(){}var he={H:null,A:null,T:null,S:null},bg=Object.prototype.hasOwnProperty;function xc(e,t,n){var a=n.ref;return{$$typeof:Tc,type:e,key:t,ref:a!==void 0?a:null,props:n}}function fb(e,t){return xc(e.type,t,e.props)}function Mc(e){return typeof e=="object"&&e!==null&&e.$$typeof===Tc}function gb(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var fg=/\/+/g;function Cc(e,t){return typeof e=="object"&&e!==null&&e.key!=null?gb(""+e.key):t.toString(36)}function mb(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Rc,Rc):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function gl(e,t,n,a,l){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var r=!1;if(e===null)r=!0;else switch(i){case"bigint":case"string":case"number":r=!0;break;case"object":switch(e.$$typeof){case Tc:case tb:r=!0;break;case mg:return r=e._init,gl(r(e._payload),t,n,a,l)}}if(r)return l=l(e),r=a===""?"."+Cc(e,0):a,dg(l)?(n="",r!=null&&(n=r.replace(fg,"$&/")+"/"),gl(l,t,n,"",function(c){return c})):l!=null&&(Mc(l)&&(l=fb(l,n+(l.key==null||e&&e.key===l.key?"":(""+l.key).replace(fg,"$&/")+"/")+r)),t.push(l)),1;r=0;var o=a===""?".":a+":";if(dg(e))for(var u=0;u<e.length;u++)a=e[u],i=o+Cc(a,u),r+=gl(a,t,n,i,l);else if(u=db(e),typeof u=="function")for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,i=o+Cc(a,u++),r+=gl(a,t,n,i,l);else if(i==="object"){if(typeof e.then=="function")return gl(mb(e),t,n,a,l);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return r}function ro(e,t,n){if(e==null)return e;var a=[],l=0;return gl(e,a,"","",function(i){return t.call(n,i,l++)}),a}function hb(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var gg=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},pb={map:ro,forEach:function(e,t,n){ro(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ro(e,function(){t++}),t},toArray:function(e){return ro(e,function(t){return t})||[]},only:function(e){if(!Mc(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};z.Activity=sb;z.Children=pb;z.Component=ml;z.Fragment=nb;z.Profiler=lb;z.PureComponent=Ec;z.StrictMode=ab;z.Suspense=ub;z.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=he;z.__COMPILER_RUNTIME={__proto__:null,c:function(e){return he.H.useMemoCache(e)}};z.cache=function(e){return function(){return e.apply(null,arguments)}};z.cacheSignal=function(){return null};z.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=pg({},e.props),l=e.key;if(t!=null)for(i in t.key!==void 0&&(l=""+t.key),t)!bg.call(t,i)||i==="key"||i==="__self"||i==="__source"||i==="ref"&&t.ref===void 0||(a[i]=t[i]);var i=arguments.length-2;if(i===1)a.children=n;else if(1<i){for(var r=Array(i),o=0;o<i;o++)r[o]=arguments[o+2];a.children=r}return xc(e.type,l,a)};z.createContext=function(e){return e={$$typeof:rb,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:ib,_context:e},e};z.createElement=function(e,t,n){var a,l={},i=null;if(t!=null)for(a in t.key!==void 0&&(i=""+t.key),t)bg.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(l[a]=t[a]);var r=arguments.length-2;if(r===1)l.children=n;else if(1<r){for(var o=Array(r),u=0;u<r;u++)o[u]=arguments[u+2];l.children=o}if(e&&e.defaultProps)for(a in r=e.defaultProps,r)l[a]===void 0&&(l[a]=r[a]);return xc(e,i,l)};z.createRef=function(){return{current:null}};z.forwardRef=function(e){return{$$typeof:ob,render:e}};z.isValidElement=Mc;z.lazy=function(e){return{$$typeof:mg,_payload:{_status:-1,_result:e},_init:hb}};z.memo=function(e,t){return{$$typeof:cb,type:e,compare:t===void 0?null:t}};z.startTransition=function(e){var t=he.T,n={};he.T=n;try{var a=e(),l=he.S;l!==null&&l(n,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(Rc,gg)}catch(i){gg(i)}finally{t!==null&&n.types!==null&&(t.types=n.types),he.T=t}};z.unstable_useCacheRefresh=function(){return he.H.useCacheRefresh()};z.use=function(e){return he.H.use(e)};z.useActionState=function(e,t,n){return he.H.useActionState(e,t,n)};z.useCallback=function(e,t){return he.H.useCallback(e,t)};z.useContext=function(e){return he.H.useContext(e)};z.useDebugValue=function(){};z.useDeferredValue=function(e,t){return he.H.useDeferredValue(e,t)};z.useEffect=function(e,t){return he.H.useEffect(e,t)};z.useEffectEvent=function(e){return he.H.useEffectEvent(e)};z.useId=function(){return he.H.useId()};z.useImperativeHandle=function(e,t,n){return he.H.useImperativeHandle(e,t,n)};z.useInsertionEffect=function(e,t){return he.H.useInsertionEffect(e,t)};z.useLayoutEffect=function(e,t){return he.H.useLayoutEffect(e,t)};z.useMemo=function(e,t){return he.H.useMemo(e,t)};z.useOptimistic=function(e,t){return he.H.useOptimistic(e,t)};z.useReducer=function(e,t,n){return he.H.useReducer(e,t,n)};z.useRef=function(e){return he.H.useRef(e)};z.useState=function(e){return he.H.useState(e)};z.useSyncExternalStore=function(e,t,n){return he.H.useSyncExternalStore(e,t,n)};z.useTransition=function(){return he.H.useTransition()};z.version="19.2.8"});var ft=un((zS,wg)=>{"use strict";wg.exports=Ag()});var Bg=un(Se=>{"use strict";function Oc(e,t){var n=e.length;e.push(t);e:for(;0<n;){var a=n-1>>>1,l=e[a];if(0<oo(l,t))e[a]=t,e[n]=l,n=a;else break e}}function cn(e){return e.length===0?null:e[0]}function co(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,l=e.length,i=l>>>1;a<i;){var r=2*(a+1)-1,o=e[r],u=r+1,c=e[u];if(0>oo(o,n))u<l&&0>oo(c,o)?(e[a]=c,e[u]=n,a=u):(e[a]=o,e[r]=n,a=r);else if(u<l&&0>oo(c,n))e[a]=c,e[u]=n,a=u;else break e}}return t}function oo(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}Se.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Sg=performance,Se.unstable_now=function(){return Sg.now()}):(_c=Date,Cg=_c.now(),Se.unstable_now=function(){return _c.now()-Cg});var Sg,_c,Cg,wn=[],Qn=[],yb=1,Ut=null,et=3,kc=!1,Mi=!1,_i=!1,Lc=!1,Eg=typeof setTimeout=="function"?setTimeout:null,Dg=typeof clearTimeout=="function"?clearTimeout:null,Rg=typeof setImmediate<"u"?setImmediate:null;function uo(e){for(var t=cn(Qn);t!==null;){if(t.callback===null)co(Qn);else if(t.startTime<=e)co(Qn),t.sortIndex=t.expirationTime,Oc(wn,t);else break;t=cn(Qn)}}function Hc(e){if(_i=!1,uo(e),!Mi)if(cn(wn)!==null)Mi=!0,pl||(pl=!0,hl());else{var t=cn(Qn);t!==null&&zc(Hc,t.startTime-e)}}var pl=!1,Bi=-1,xg=5,Mg=-1;function _g(){return Lc?!0:!(Se.unstable_now()-Mg<xg)}function Bc(){if(Lc=!1,pl){var e=Se.unstable_now();Mg=e;var t=!0;try{e:{Mi=!1,_i&&(_i=!1,Dg(Bi),Bi=-1),kc=!0;var n=et;try{t:{for(uo(e),Ut=cn(wn);Ut!==null&&!(Ut.expirationTime>e&&_g());){var a=Ut.callback;if(typeof a=="function"){Ut.callback=null,et=Ut.priorityLevel;var l=a(Ut.expirationTime<=e);if(e=Se.unstable_now(),typeof l=="function"){Ut.callback=l,uo(e),t=!0;break t}Ut===cn(wn)&&co(wn),uo(e)}else co(wn);Ut=cn(wn)}if(Ut!==null)t=!0;else{var i=cn(Qn);i!==null&&zc(Hc,i.startTime-e),t=!1}}break e}finally{Ut=null,et=n,kc=!1}t=void 0}}finally{t?hl():pl=!1}}}var hl;typeof Rg=="function"?hl=function(){Rg(Bc)}:typeof MessageChannel<"u"?(Nc=new MessageChannel,Tg=Nc.port2,Nc.port1.onmessage=Bc,hl=function(){Tg.postMessage(null)}):hl=function(){Eg(Bc,0)};var Nc,Tg;function zc(e,t){Bi=Eg(function(){e(Se.unstable_now())},t)}Se.unstable_IdlePriority=5;Se.unstable_ImmediatePriority=1;Se.unstable_LowPriority=4;Se.unstable_NormalPriority=3;Se.unstable_Profiling=null;Se.unstable_UserBlockingPriority=2;Se.unstable_cancelCallback=function(e){e.callback=null};Se.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):xg=0<e?Math.floor(1e3/e):5};Se.unstable_getCurrentPriorityLevel=function(){return et};Se.unstable_next=function(e){switch(et){case 1:case 2:case 3:var t=3;break;default:t=et}var n=et;et=t;try{return e()}finally{et=n}};Se.unstable_requestPaint=function(){Lc=!0};Se.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=et;et=e;try{return t()}finally{et=n}};Se.unstable_scheduleCallback=function(e,t,n){var a=Se.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0<n?a+n:a):n=a,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return l=n+l,e={id:yb++,callback:t,priorityLevel:e,startTime:n,expirationTime:l,sortIndex:-1},n>a?(e.sortIndex=n,Oc(Qn,e),cn(wn)===null&&e===cn(Qn)&&(_i?(Dg(Bi),Bi=-1):_i=!0,zc(Hc,n-a))):(e.sortIndex=l,Oc(wn,e),Mi||kc||(Mi=!0,pl||(pl=!0,hl()))),e};Se.unstable_shouldYield=_g;Se.unstable_wrapCallback=function(e){var t=et;return function(){var n=et;et=t;try{return e.apply(this,arguments)}finally{et=n}}}});var Og=un((GS,Ng)=>{"use strict";Ng.exports=Bg()});var Lg=un(ot=>{"use strict";var vb=ft();function kg(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Kn(){}var rt={d:{f:Kn,r:function(){throw Error(kg(522))},D:Kn,C:Kn,L:Kn,m:Kn,X:Kn,S:Kn,M:Kn},p:0,findDOMNode:null},bb=Symbol.for("react.portal");function Ab(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:bb,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}var Ni=vb.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function so(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}ot.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=rt;ot.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(kg(299));return Ab(e,t,null,n)};ot.flushSync=function(e){var t=Ni.T,n=rt.p;try{if(Ni.T=null,rt.p=2,e)return e()}finally{Ni.T=t,rt.p=n,rt.d.f()}};ot.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,rt.d.C(e,t))};ot.prefetchDNS=function(e){typeof e=="string"&&rt.d.D(e)};ot.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var n=t.as,a=so(n,t.crossOrigin),l=typeof t.integrity=="string"?t.integrity:void 0,i=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;n==="style"?rt.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:l,fetchPriority:i}):n==="script"&&rt.d.X(e,{crossOrigin:a,integrity:l,fetchPriority:i,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};ot.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var n=so(t.as,t.crossOrigin);rt.d.M(e,{crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&rt.d.M(e)};ot.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var n=t.as,a=so(n,t.crossOrigin);rt.d.L(e,n,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};ot.preloadModule=function(e,t){if(typeof e=="string")if(t){var n=so(t.as,t.crossOrigin);rt.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else rt.d.m(e)};ot.requestFormReset=function(e){rt.d.r(e)};ot.unstable_batchedUpdates=function(e,t){return e(t)};ot.useFormState=function(e,t,n){return Ni.H.useFormState(e,t,n)};ot.useFormStatus=function(){return Ni.H.useHostTransitionStatus()};ot.version="19.2.8"});var Ug=un((qS,zg)=>{"use strict";function Hg(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Hg)}catch(e){console.error(e)}}Hg(),zg.exports=Lg()});var Wy=un(Hu=>{"use strict";var Ge=Og(),sh=ft(),wb=Ug();function S(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function dh(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function vr(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function fh(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function gh(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function Gg(e){if(vr(e)!==e)throw Error(S(188))}function Sb(e){var t=e.alternate;if(!t){if(t=vr(e),t===null)throw Error(S(188));return t!==e?null:e}for(var n=e,a=t;;){var l=n.return;if(l===null)break;var i=l.alternate;if(i===null){if(a=l.return,a!==null){n=a;continue}break}if(l.child===i.child){for(i=l.child;i;){if(i===n)return Gg(l),e;if(i===a)return Gg(l),t;i=i.sibling}throw Error(S(188))}if(n.return!==a.return)n=l,a=i;else{for(var r=!1,o=l.child;o;){if(o===n){r=!0,n=l,a=i;break}if(o===a){r=!0,a=l,n=i;break}o=o.sibling}if(!r){for(o=i.child;o;){if(o===n){r=!0,n=i,a=l;break}if(o===a){r=!0,a=i,n=l;break}o=o.sibling}if(!r)throw Error(S(189))}}if(n.alternate!==a)throw Error(S(190))}if(n.tag!==3)throw Error(S(188));return n.stateNode.current===n?e:t}function mh(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=mh(e),t!==null)return t;e=e.sibling}return null}var ve=Object.assign,Cb=Symbol.for("react.element"),fo=Symbol.for("react.transitional.element"),Pi=Symbol.for("react.portal"),Sl=Symbol.for("react.fragment"),hh=Symbol.for("react.strict_mode"),ys=Symbol.for("react.profiler"),ph=Symbol.for("react.consumer"),Mn=Symbol.for("react.context"),fd=Symbol.for("react.forward_ref"),vs=Symbol.for("react.suspense"),bs=Symbol.for("react.suspense_list"),gd=Symbol.for("react.memo"),Zn=Symbol.for("react.lazy");Symbol.for("react.scope");var As=Symbol.for("react.activity");Symbol.for("react.legacy_hidden");Symbol.for("react.tracing_marker");var Rb=Symbol.for("react.memo_cache_sentinel");Symbol.for("react.view_transition");var Pg=Symbol.iterator;function Oi(e){return e===null||typeof e!="object"?null:(e=Pg&&e[Pg]||e["@@iterator"],typeof e=="function"?e:null)}var Tb=Symbol.for("react.client.reference");function ws(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Tb?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Sl:return"Fragment";case ys:return"Profiler";case hh:return"StrictMode";case vs:return"Suspense";case bs:return"SuspenseList";case As:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case Pi:return"Portal";case Mn:return e.displayName||"Context";case ph:return(e._context.displayName||"Context")+".Consumer";case fd:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case gd:return t=e.displayName||null,t!==null?t:ws(e.type)||"Memo";case Zn:t=e._payload,e=e._init;try{return ws(e(t))}catch{}}return null}var qi=Array.isArray,L=sh.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,$=wb.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,za={pending:!1,data:null,method:null,action:null},Ss=[],Cl=-1;function mn(e){return{current:e}}function Fe(e){0>Cl||(e.current=Ss[Cl],Ss[Cl]=null,Cl--)}function ge(e,t){Cl++,Ss[Cl]=e.current,e.current=t}var gn=mn(null),lr=mn(null),ra=mn(null),Vo=mn(null);function Xo(e,t){switch(ge(ra,t),ge(lr,e),ge(gn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Qm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Qm(t),e=Hy(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Fe(gn),ge(gn,e)}function ql(){Fe(gn),Fe(lr),Fe(ra)}function Cs(e){e.memoizedState!==null&&ge(Vo,e);var t=gn.current,n=Hy(t,e.type);t!==n&&(ge(lr,e),ge(gn,n))}function Qo(e){lr.current===e&&(Fe(gn),Fe(lr)),Vo.current===e&&(Fe(Vo),hr._currentValue=za)}var Uc,qg;function Oa(e){if(Uc===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Uc=t&&t[1]||"",qg=-1<n.stack.indexOf(`    at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return``+Uc+e+qg}var Gc=!1;function Pc(e,t){if(!e||Gc)return"";Gc=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var f=function(){throw Error()};if(Object.defineProperty(f.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(f,[])}catch(m){var d=m}Reflect.construct(e,[],f)}else{try{f.call()}catch(m){d=m}e.call(f.prototype)}}else{try{throw Error()}catch(m){d=m}(f=e())&&typeof f.catch=="function"&&f.catch(function(){})}}catch(m){if(m&&d&&typeof m.stack=="string")return[m.stack,d.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var l=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");l&&l.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var i=a.DetermineComponentFrameRoot(),r=i[0],o=i[1];if(r&&o){var u=r.split(``),c=o.split(``);for(l=a=0;a<u.length&&!u[a].includes("DetermineComponentFrameRoot");)a++;for(;l<c.length&&!c[l].includes("DetermineComponentFrameRoot");)l++;if(a===u.length||l===c.length)for(a=u.length-1,l=c.length-1;1<=a&&0<=l&&u[a]!==c[l];)l--;for(;1<=a&&0<=l;a--,l--)if(u[a]!==c[l]){if(a!==1||l!==1)do if(a--,l--,0>l||u[a]!==c[l]){var s=``+u[a].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{Gc=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Oa(n):""}function Eb(e,t){switch(e.tag){case 26:case 27:case 5:return Oa(e.type);case 16:return Oa("Lazy");case 13:return e.child!==t&&t!==null?Oa("Suspense Fallback"):Oa("Suspense");case 19:return Oa("SuspenseList");case 0:case 15:return Pc(e.type,!1);case 11:return Pc(e.type.render,!1);case 1:return Pc(e.type,!0);case 31:return Oa("Activity");default:return""}}function Fg(e){try{var t="",n=null;do t+=Eb(e,n),n=e,e=e.return;while(e);return t}catch(a){return`Error generating stack: `+a.message+``+a.stack}}var Rs=Object.prototype.hasOwnProperty,md=Ge.unstable_scheduleCallback,qc=Ge.unstable_cancelCallback,Db=Ge.unstable_shouldYield,xb=Ge.unstable_requestPaint,Dt=Ge.unstable_now,Mb=Ge.unstable_getCurrentPriorityLevel,yh=Ge.unstable_ImmediatePriority,vh=Ge.unstable_UserBlockingPriority,Ko=Ge.unstable_NormalPriority,_b=Ge.unstable_LowPriority,bh=Ge.unstable_IdlePriority,Bb=Ge.log,Nb=Ge.unstable_setDisableYieldValue,br=null,xt=null;function ta(e){if(typeof Bb=="function"&&Nb(e),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(br,e)}catch{}}var Mt=Math.clz32?Math.clz32:Lb,Ob=Math.log,kb=Math.LN2;function Lb(e){return e>>>=0,e===0?32:31-(Ob(e)/kb|0)|0}var go=256,mo=262144,ho=4194304;function ka(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Au(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var l=0,i=e.suspendedLanes,r=e.pingedLanes;e=e.warmLanes;var o=a&134217727;return o!==0?(a=o&~i,a!==0?l=ka(a):(r&=o,r!==0?l=ka(r):n||(n=o&~e,n!==0&&(l=ka(n))))):(o=a&~i,o!==0?l=ka(o):r!==0?l=ka(r):n||(n=a&~e,n!==0&&(l=ka(n)))),l===0?0:t!==0&&t!==l&&(t&i)===0&&(i=l&-l,n=t&-t,i>=n||i===32&&(n&4194048)!==0)?t:l}function Ar(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Hb(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ah(){var e=ho;return ho<<=1,(ho&62914560)===0&&(ho=4194304),e}function Fc(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function wr(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function zb(e,t,n,a,l,i){var r=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var o=e.entanglements,u=e.expirationTimes,c=e.hiddenUpdates;for(n=r&~n;0<n;){var s=31-Mt(n),f=1<<s;o[s]=0,u[s]=-1;var d=c[s];if(d!==null)for(c[s]=null,s=0;s<d.length;s++){var m=d[s];m!==null&&(m.lane&=-536870913)}n&=~f}a!==0&&wh(e,a,0),i!==0&&l===0&&e.tag!==0&&(e.suspendedLanes|=i&~(r&~t))}function wh(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-Mt(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|n&261930}function Sh(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-Mt(n),l=1<<a;l&t|e[a]&t&&(e[a]|=t),n&=~l}}function Ch(e,t){var n=t&-t;return n=(n&42)!==0?1:hd(n),(n&(e.suspendedLanes|t))!==0?0:n}function hd(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function pd(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function Rh(){var e=$.p;return e!==0?e:(e=window.event,e===void 0?32:Qy(e.type))}function jg(e,t){var n=$.p;try{return $.p=e,t()}finally{$.p=n}}var ba=Math.random().toString(36).slice(2),Ve="__reactFiber$"+ba,vt="__reactProps$"+ba,Jl="__reactContainer$"+ba,Ts="__reactEvents$"+ba,Ub="__reactListeners$"+ba,Gb="__reactHandles$"+ba,Yg="__reactResources$"+ba,Sr="__reactMarker$"+ba;function yd(e){delete e[Ve],delete e[vt],delete e[Ts],delete e[Ub],delete e[Gb]}function Rl(e){var t=e[Ve];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jl]||n[Ve]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Jm(e);e!==null;){if(n=e[Ve])return n;e=Jm(e)}return t}e=n,n=e.parentNode}return null}function $l(e){if(e=e[Ve]||e[Jl]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Fi(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(S(33))}function kl(e){var t=e[Yg];return t||(t=e[Yg]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function qe(e){e[Sr]=!0}var Th=new Set,Eh={};function Qa(e,t){Fl(e,t),Fl(e+"Capture",t)}function Fl(e,t){for(Eh[e]=t,e=0;e<t.length;e++)Th.add(t[e])}var Pb=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Vg={},Xg={};function qb(e){return Rs.call(Xg,e)?!0:Rs.call(Vg,e)?!1:Pb.test(e)?Xg[e]=!0:(Vg[e]=!0,!1)}function _o(e,t,n){if(qb(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+n)}}function po(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+n)}}function Sn(e,t,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttributeNS(t,n,""+a)}}function Pt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Dh(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Fb(e,t,n){var a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var l=a.get,i=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(r){n=""+r,i.call(this,r)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(r){n=""+r},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Es(e){if(!e._valueTracker){var t=Dh(e)?"checked":"value";e._valueTracker=Fb(e,t,""+e[t])}}function xh(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=Dh(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function Zo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var jb=/[\n"\\]/g;function jt(e){return e.replace(jb,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Ds(e,t,n,a,l,i,r,o){e.name="",r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?e.type=r:e.removeAttribute("type"),t!=null?r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Pt(t)):e.value!==""+Pt(t)&&(e.value=""+Pt(t)):r!=="submit"&&r!=="reset"||e.removeAttribute("value"),t!=null?xs(e,r,Pt(t)):n!=null?xs(e,r,Pt(n)):a!=null&&e.removeAttribute("value"),l==null&&i!=null&&(e.defaultChecked=!!i),l!=null&&(e.checked=l&&typeof l!="function"&&typeof l!="symbol"),o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?e.name=""+Pt(o):e.removeAttribute("name")}function Mh(e,t,n,a,l,i,r,o){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.type=i),t!=null||n!=null){if(!(i!=="submit"&&i!=="reset"||t!=null)){Es(e);return}n=n!=null?""+Pt(n):"",t=t!=null?""+Pt(t):n,o||t===e.value||(e.value=t),e.defaultValue=t}a=a??l,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=o?e.checked:!!a,e.defaultChecked=!!a,r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"&&(e.name=r),Es(e)}function xs(e,t,n){t==="number"&&Zo(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Ll(e,t,n,a){if(e=e.options,t){t={};for(var l=0;l<n.length;l++)t["$"+n[l]]=!0;for(n=0;n<e.length;n++)l=t.hasOwnProperty("$"+e[n].value),e[n].selected!==l&&(e[n].selected=l),l&&a&&(e[n].defaultSelected=!0)}else{for(n=""+Pt(n),t=null,l=0;l<e.length;l++){if(e[l].value===n){e[l].selected=!0,a&&(e[l].defaultSelected=!0);return}t!==null||e[l].disabled||(t=e[l])}t!==null&&(t.selected=!0)}}function _h(e,t,n){if(t!=null&&(t=""+Pt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+Pt(n):""}function Bh(e,t,n,a){if(t==null){if(a!=null){if(n!=null)throw Error(S(92));if(qi(a)){if(1<a.length)throw Error(S(93));a=a[0]}n=a}n==null&&(n=""),t=n}n=Pt(t),e.defaultValue=n,a=e.textContent,a===n&&a!==""&&a!==null&&(e.value=a),Es(e)}function jl(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Yb=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Qg(e,t,n){var a=t.indexOf("--")===0;n==null||typeof n=="boolean"||n===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,n):typeof n!="number"||n===0||Yb.has(t)?t==="float"?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function Nh(e,t,n){if(t!=null&&typeof t!="object")throw Error(S(62));if(e=e.style,n!=null){for(var a in n)!n.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="");for(var l in t)a=t[l],t.hasOwnProperty(l)&&n[l]!==a&&Qg(e,l,a)}else for(var i in t)t.hasOwnProperty(i)&&Qg(e,i,t[i])}function vd(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Vb=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Xb=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Bo(e){return Xb.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function _n(){}var Ms=null;function bd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Tl=null,Hl=null;function Kg(e){var t=$l(e);if(t&&(e=t.stateNode)){var n=e[vt]||null;e:switch(e=t.stateNode,t.type){case"input":if(Ds(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+jt(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var l=a[vt]||null;if(!l)throw Error(S(90));Ds(a,l.value,l.defaultValue,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name)}}for(t=0;t<n.length;t++)a=n[t],a.form===e.form&&xh(a)}break e;case"textarea":_h(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&Ll(e,!!n.multiple,t,!1)}}}var jc=!1;function Oh(e,t,n){if(jc)return e(t,n);jc=!0;try{var a=e(t);return a}finally{if(jc=!1,(Tl!==null||Hl!==null)&&(Nu(),Tl&&(t=Tl,e=Hl,Hl=Tl=null,Kg(t),e)))for(t=0;t<e.length;t++)Kg(e[t])}}function ir(e,t){var n=e.stateNode;if(n===null)return null;var a=n[vt]||null;if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(S(231,t,typeof n));return n}var Ln=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_s=!1;if(Ln)try{yl={},Object.defineProperty(yl,"passive",{get:function(){_s=!0}}),window.addEventListener("test",yl,yl),window.removeEventListener("test",yl,yl)}catch{_s=!1}var yl,na=null,Ad=null,No=null;function kh(){if(No)return No;var e,t=Ad,n=t.length,a,l="value"in na?na.value:na.textContent,i=l.length;for(e=0;e<n&&t[e]===l[e];e++);var r=n-e;for(a=1;a<=r&&t[n-a]===l[i-a];a++);return No=l.slice(e,1<a?1-a:void 0)}function Oo(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function yo(){return!0}function Zg(){return!1}function bt(e){function t(n,a,l,i,r){this._reactName=n,this._targetInst=l,this.type=a,this.nativeEvent=i,this.target=r,this.currentTarget=null;for(var o in e)e.hasOwnProperty(o)&&(n=e[o],this[o]=n?n(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented!=null?i.defaultPrevented:i.returnValue===!1)?yo:Zg,this.isPropagationStopped=Zg,this}return ve(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=yo)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=yo)},persist:function(){},isPersistent:yo}),t}var Ka={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},wu=bt(Ka),Cr=ve({},Ka,{view:0,detail:0}),Qb=bt(Cr),Yc,Vc,ki,Su=ve({},Cr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:wd,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ki&&(ki&&e.type==="mousemove"?(Yc=e.screenX-ki.screenX,Vc=e.screenY-ki.screenY):Vc=Yc=0,ki=e),Yc)},movementY:function(e){return"movementY"in e?e.movementY:Vc}}),Wg=bt(Su),Kb=ve({},Su,{dataTransfer:0}),Zb=bt(Kb),Wb=ve({},Cr,{relatedTarget:0}),Xc=bt(Wb),Ib=ve({},Ka,{animationName:0,elapsedTime:0,pseudoElement:0}),Jb=bt(Ib),$b=ve({},Ka,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),eA=bt($b),tA=ve({},Ka,{data:0}),Ig=bt(tA),nA={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},aA={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},lA={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function iA(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=lA[e])?!!t[e]:!1}function wd(){return iA}var rA=ve({},Cr,{key:function(e){if(e.key){var t=nA[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Oo(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?aA[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:wd,charCode:function(e){return e.type==="keypress"?Oo(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Oo(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),oA=bt(rA),uA=ve({},Su,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Jg=bt(uA),cA=ve({},Cr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:wd}),sA=bt(cA),dA=ve({},Ka,{propertyName:0,elapsedTime:0,pseudoElement:0}),fA=bt(dA),gA=ve({},Su,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),mA=bt(gA),hA=ve({},Ka,{newState:0,oldState:0}),pA=bt(hA),yA=[9,13,27,32],Sd=Ln&&"CompositionEvent"in window,Vi=null;Ln&&"documentMode"in document&&(Vi=document.documentMode);var vA=Ln&&"TextEvent"in window&&!Vi,Lh=Ln&&(!Sd||Vi&&8<Vi&&11>=Vi),$g=" ",em=!1;function Hh(e,t){switch(e){case"keyup":return yA.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var El=!1;function bA(e,t){switch(e){case"compositionend":return zh(t);case"keypress":return t.which!==32?null:(em=!0,$g);case"textInput":return e=t.data,e===$g&&em?null:e;default:return null}}function AA(e,t){if(El)return e==="compositionend"||!Sd&&Hh(e,t)?(e=kh(),No=Ad=na=null,El=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Lh&&t.locale!=="ko"?null:t.data;default:return null}}var wA={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function tm(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!wA[e.type]:t==="textarea"}function Uh(e,t,n,a){Tl?Hl?Hl.push(a):Hl=[a]:Tl=a,t=gu(t,"onChange"),0<t.length&&(n=new wu("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Xi=null,rr=null;function SA(e){Oy(e,0)}function Cu(e){var t=Fi(e);if(xh(t))return e}function nm(e,t){if(e==="change")return t}var Gh=!1;Ln&&(Ln?(bo="oninput"in document,bo||(Qc=document.createElement("div"),Qc.setAttribute("oninput","return;"),bo=typeof Qc.oninput=="function"),vo=bo):vo=!1,Gh=vo&&(!document.documentMode||9<document.documentMode));var vo,bo,Qc;function am(){Xi&&(Xi.detachEvent("onpropertychange",Ph),rr=Xi=null)}function Ph(e){if(e.propertyName==="value"&&Cu(rr)){var t=[];Uh(t,rr,e,bd(e)),Oh(SA,t)}}function CA(e,t,n){e==="focusin"?(am(),Xi=t,rr=n,Xi.attachEvent("onpropertychange",Ph)):e==="focusout"&&am()}function RA(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Cu(rr)}function TA(e,t){if(e==="click")return Cu(t)}function EA(e,t){if(e==="input"||e==="change")return Cu(t)}function DA(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Bt=typeof Object.is=="function"?Object.is:DA;function or(e,t){if(Bt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var l=n[a];if(!Rs.call(t,l)||!Bt(e[l],t[l]))return!1}return!0}function lm(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function im(e,t){var n=lm(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=lm(n)}}function qh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Zo(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Zo(e.document)}return t}function Cd(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var xA=Ln&&"documentMode"in document&&11>=document.documentMode,Dl=null,Bs=null,Qi=null,Ns=!1;function rm(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ns||Dl==null||Dl!==Zo(a)||(a=Dl,"selectionStart"in a&&Cd(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Qi&&or(Qi,a)||(Qi=a,a=gu(Bs,"onSelect"),0<a.length&&(t=new wu("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=Dl)))}function Na(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xl={animationend:Na("Animation","AnimationEnd"),animationiteration:Na("Animation","AnimationIteration"),animationstart:Na("Animation","AnimationStart"),transitionrun:Na("Transition","TransitionRun"),transitionstart:Na("Transition","TransitionStart"),transitioncancel:Na("Transition","TransitionCancel"),transitionend:Na("Transition","TransitionEnd")},Kc={},jh={};Ln&&(jh=document.createElement("div").style,"AnimationEvent"in window||(delete xl.animationend.animation,delete xl.animationiteration.animation,delete xl.animationstart.animation),"TransitionEvent"in window||delete xl.transitionend.transition);function Za(e){if(Kc[e])return Kc[e];if(!xl[e])return e;var t=xl[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in jh)return Kc[e]=t[n];return e}var Yh=Za("animationend"),Vh=Za("animationiteration"),Xh=Za("animationstart"),MA=Za("transitionrun"),_A=Za("transitionstart"),BA=Za("transitioncancel"),Qh=Za("transitionend"),Kh=new Map,Os="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Os.push("scrollEnd");function tn(e,t){Kh.set(e,t),Qa(t,[e])}var Wo=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},Gt=[],Ml=0,Rd=0;function Ru(){for(var e=Ml,t=Rd=Ml=0;t<e;){var n=Gt[t];Gt[t++]=null;var a=Gt[t];Gt[t++]=null;var l=Gt[t];Gt[t++]=null;var i=Gt[t];if(Gt[t++]=null,a!==null&&l!==null){var r=a.pending;r===null?l.next=l:(l.next=r.next,r.next=l),a.pending=l}i!==0&&Zh(n,l,i)}}function Tu(e,t,n,a){Gt[Ml++]=e,Gt[Ml++]=t,Gt[Ml++]=n,Gt[Ml++]=a,Rd|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function Td(e,t,n,a){return Tu(e,t,n,a),Io(e)}function Wa(e,t){return Tu(e,null,null,t),Io(e)}function Zh(e,t,n){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n);for(var l=!1,i=e.return;i!==null;)i.childLanes|=n,a=i.alternate,a!==null&&(a.childLanes|=n),i.tag===22&&(e=i.stateNode,e===null||e._visibility&1||(l=!0)),e=i,i=i.return;return e.tag===3?(i=e.stateNode,l&&t!==null&&(l=31-Mt(n),e=i.hiddenUpdates,a=e[l],a===null?e[l]=[t]:a.push(t),t.lane=n|536870912),i):null}function Io(e){if(50<nr)throw nr=0,ed=null,Error(S(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var _l={};function NA(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Tt(e,t,n,a){return new NA(e,t,n,a)}function Ed(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Nn(e,t){var n=e.alternate;return n===null?(n=Tt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function Wh(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function ko(e,t,n,a,l,i){var r=0;if(a=e,typeof e=="function")Ed(e)&&(r=1);else if(typeof e=="string")r=Lw(e,n,gn.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case As:return e=Tt(31,n,t,l),e.elementType=As,e.lanes=i,e;case Sl:return Ua(n.children,l,i,t);case hh:r=8,l|=24;break;case ys:return e=Tt(12,n,t,l|2),e.elementType=ys,e.lanes=i,e;case vs:return e=Tt(13,n,t,l),e.elementType=vs,e.lanes=i,e;case bs:return e=Tt(19,n,t,l),e.elementType=bs,e.lanes=i,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Mn:r=10;break e;case ph:r=9;break e;case fd:r=11;break e;case gd:r=14;break e;case Zn:r=16,a=null;break e}r=29,n=Error(S(130,e===null?"null":typeof e,"")),a=null}return t=Tt(r,n,t,l),t.elementType=e,t.type=a,t.lanes=i,t}function Ua(e,t,n,a){return e=Tt(7,e,a,t),e.lanes=n,e}function Zc(e,t,n){return e=Tt(6,e,null,t),e.lanes=n,e}function Ih(e){var t=Tt(18,null,null,0);return t.stateNode=e,t}function Wc(e,t,n){return t=Tt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var om=new WeakMap;function Yt(e,t){if(typeof e=="object"&&e!==null){var n=om.get(e);return n!==void 0?n:(t={value:e,source:t,stack:Fg(t)},om.set(e,t),t)}return{value:e,source:t,stack:Fg(t)}}var Bl=[],Nl=0,Jo=null,ur=0,qt=[],Ft=0,ha=null,sn=1,dn="";function Dn(e,t){Bl[Nl++]=ur,Bl[Nl++]=Jo,Jo=e,ur=t}function Jh(e,t,n){qt[Ft++]=sn,qt[Ft++]=dn,qt[Ft++]=ha,ha=e;var a=sn;e=dn;var l=32-Mt(a)-1;a&=~(1<<l),n+=1;var i=32-Mt(t)+l;if(30<i){var r=l-l%5;i=(a&(1<<r)-1).toString(32),a>>=r,l-=r,sn=1<<32-Mt(t)+l|n<<l|a,dn=i+e}else sn=1<<i|n<<l|a,dn=e}function Dd(e){e.return!==null&&(Dn(e,1),Jh(e,1,0))}function xd(e){for(;e===Jo;)Jo=Bl[--Nl],Bl[Nl]=null,ur=Bl[--Nl],Bl[Nl]=null;for(;e===ha;)ha=qt[--Ft],qt[Ft]=null,dn=qt[--Ft],qt[Ft]=null,sn=qt[--Ft],qt[Ft]=null}function $h(e,t){qt[Ft++]=sn,qt[Ft++]=dn,qt[Ft++]=ha,sn=t.id,dn=t.overflow,ha=e}var Xe=null,ye=null,V=!1,oa=null,Vt=!1,ks=Error(S(519));function pa(e){var t=Error(S(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw cr(Yt(t,e)),ks}function um(e){var t=e.stateNode,n=e.type,a=e.memoizedProps;switch(t[Ve]=e,t[vt]=a,n){case"dialog":q("cancel",t),q("close",t);break;case"iframe":case"object":case"embed":q("load",t);break;case"video":case"audio":for(n=0;n<gr.length;n++)q(gr[n],t);break;case"source":q("error",t);break;case"img":case"image":case"link":q("error",t),q("load",t);break;case"details":q("toggle",t);break;case"input":q("invalid",t),Mh(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"select":q("invalid",t);break;case"textarea":q("invalid",t),Bh(t,a.value,a.defaultValue,a.children)}n=a.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||a.suppressHydrationWarning===!0||Ly(t.textContent,n)?(a.popover!=null&&(q("beforetoggle",t),q("toggle",t)),a.onScroll!=null&&q("scroll",t),a.onScrollEnd!=null&&q("scrollend",t),a.onClick!=null&&(t.onclick=_n),t=!0):t=!1,t||pa(e,!0)}function cm(e){for(Xe=e.return;Xe;)switch(Xe.tag){case 5:case 31:case 13:Vt=!1;return;case 27:case 3:Vt=!0;return;default:Xe=Xe.return}}function vl(e){if(e!==Xe)return!1;if(!V)return cm(e),V=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||id(e.type,e.memoizedProps)),n=!n),n&&ye&&pa(e),cm(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(317));ye=Im(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(317));ye=Im(e)}else t===27?(t=ye,Aa(e.type)?(e=cd,cd=null,ye=e):ye=t):ye=Xe?Qt(e.stateNode.nextSibling):null;return!0}function Fa(){ye=Xe=null,V=!1}function Ic(){var e=oa;return e!==null&&(pt===null?pt=e:pt.push.apply(pt,e),oa=null),e}function cr(e){oa===null?oa=[e]:oa.push(e)}var Ls=mn(null),Ia=null,Bn=null;function In(e,t,n){ge(Ls,t._currentValue),t._currentValue=n}function On(e){e._currentValue=Ls.current,Fe(Ls)}function Hs(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function zs(e,t,n,a){var l=e.child;for(l!==null&&(l.return=e);l!==null;){var i=l.dependencies;if(i!==null){var r=l.child;i=i.firstContext;e:for(;i!==null;){var o=i;i=l;for(var u=0;u<t.length;u++)if(o.context===t[u]){i.lanes|=n,o=i.alternate,o!==null&&(o.lanes|=n),Hs(i.return,n,e),a||(r=null);break e}i=o.next}}else if(l.tag===18){if(r=l.return,r===null)throw Error(S(341));r.lanes|=n,i=r.alternate,i!==null&&(i.lanes|=n),Hs(r,n,e),r=null}else r=l.child;if(r!==null)r.return=l;else for(r=l;r!==null;){if(r===e){r=null;break}if(l=r.sibling,l!==null){l.return=r.return,r=l;break}r=r.return}l=r}}function ei(e,t,n,a){e=null;for(var l=t,i=!1;l!==null;){if(!i){if((l.flags&524288)!==0)i=!0;else if((l.flags&262144)!==0)break}if(l.tag===10){var r=l.alternate;if(r===null)throw Error(S(387));if(r=r.memoizedProps,r!==null){var o=l.type;Bt(l.pendingProps.value,r.value)||(e!==null?e.push(o):e=[o])}}else if(l===Vo.current){if(r=l.alternate,r===null)throw Error(S(387));r.memoizedState.memoizedState!==l.memoizedState.memoizedState&&(e!==null?e.push(hr):e=[hr])}l=l.return}e!==null&&zs(t,e,n,a),t.flags|=262144}function $o(e){for(e=e.firstContext;e!==null;){if(!Bt(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function ja(e){Ia=e,Bn=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Qe(e){return ep(Ia,e)}function Ao(e,t){return Ia===null&&ja(e),ep(e,t)}function ep(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Bn===null){if(e===null)throw Error(S(308));Bn=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Bn=Bn.next=t;return n}var OA=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},kA=Ge.unstable_scheduleCallback,LA=Ge.unstable_NormalPriority,ke={$$typeof:Mn,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Md(){return{controller:new OA,data:new Map,refCount:0}}function Rr(e){e.refCount--,e.refCount===0&&kA(LA,function(){e.controller.abort()})}var Ki=null,Us=0,Yl=0,zl=null;function HA(e,t){if(Ki===null){var n=Ki=[];Us=0,Yl=ef(),zl={status:"pending",value:void 0,then:function(a){n.push(a)}}}return Us++,t.then(sm,sm),t}function sm(){if(--Us===0&&Ki!==null){zl!==null&&(zl.status="fulfilled");var e=Ki;Ki=null,Yl=0,zl=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function zA(e,t){var n=[],a={status:"pending",value:null,reason:null,then:function(l){n.push(l)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var l=0;l<n.length;l++)(0,n[l])(t)},function(l){for(a.status="rejected",a.reason=l,l=0;l<n.length;l++)(0,n[l])(void 0)}),a}var dm=L.S;L.S=function(e,t){my=Dt(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&HA(e,t),dm!==null&&dm(e,t)};var Ga=mn(null);function _d(){var e=Ga.current;return e!==null?e:ue.pooledCache}function Lo(e,t){t===null?ge(Ga,Ga.current):ge(Ga,t.pool)}function tp(){var e=_d();return e===null?null:{parent:ke._currentValue,pool:e}}var ti=Error(S(460)),Bd=Error(S(474)),Eu=Error(S(542)),eu={then:function(){}};function fm(e){return e=e.status,e==="fulfilled"||e==="rejected"}function np(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(_n,_n),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,mm(e),e;default:if(typeof t.status=="string")t.then(_n,_n);else{if(e=ue,e!==null&&100<e.shellSuspendCounter)throw Error(S(482));e=t,e.status="pending",e.then(function(a){if(t.status==="pending"){var l=t;l.status="fulfilled",l.value=a}},function(a){if(t.status==="pending"){var l=t;l.status="rejected",l.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,mm(e),e}throw Pa=t,ti}}function La(e){try{var t=e._init;return t(e._payload)}catch(n){throw n!==null&&typeof n=="object"&&typeof n.then=="function"?(Pa=n,ti):n}}var Pa=null;function gm(){if(Pa===null)throw Error(S(459));var e=Pa;return Pa=null,e}function mm(e){if(e===ti||e===Eu)throw Error(S(483))}var Ul=null,sr=0;function wo(e){var t=sr;return sr+=1,Ul===null&&(Ul=[]),np(Ul,e,t)}function Li(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function So(e,t){throw t.$$typeof===Cb?Error(S(525)):(e=Object.prototype.toString.call(t),Error(S(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function ap(e){function t(h,g){if(e){var p=h.deletions;p===null?(h.deletions=[g],h.flags|=16):p.push(g)}}function n(h,g){if(!e)return null;for(;g!==null;)t(h,g),g=g.sibling;return null}function a(h){for(var g=new Map;h!==null;)h.key!==null?g.set(h.key,h):g.set(h.index,h),h=h.sibling;return g}function l(h,g){return h=Nn(h,g),h.index=0,h.sibling=null,h}function i(h,g,p){return h.index=p,e?(p=h.alternate,p!==null?(p=p.index,p<g?(h.flags|=67108866,g):p):(h.flags|=67108866,g)):(h.flags|=1048576,g)}function r(h){return e&&h.alternate===null&&(h.flags|=67108866),h}function o(h,g,p,y){return g===null||g.tag!==6?(g=Zc(p,h.mode,y),g.return=h,g):(g=l(g,p),g.return=h,g)}function u(h,g,p,y){var C=p.type;return C===Sl?s(h,g,p.props.children,y,p.key):g!==null&&(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Zn&&La(C)===g.type)?(g=l(g,p.props),Li(g,p),g.return=h,g):(g=ko(p.type,p.key,p.props,null,h.mode,y),Li(g,p),g.return=h,g)}function c(h,g,p,y){return g===null||g.tag!==4||g.stateNode.containerInfo!==p.containerInfo||g.stateNode.implementation!==p.implementation?(g=Wc(p,h.mode,y),g.return=h,g):(g=l(g,p.children||[]),g.return=h,g)}function s(h,g,p,y,C){return g===null||g.tag!==7?(g=Ua(p,h.mode,y,C),g.return=h,g):(g=l(g,p),g.return=h,g)}function f(h,g,p){if(typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint")return g=Zc(""+g,h.mode,p),g.return=h,g;if(typeof g=="object"&&g!==null){switch(g.$$typeof){case fo:return p=ko(g.type,g.key,g.props,null,h.mode,p),Li(p,g),p.return=h,p;case Pi:return g=Wc(g,h.mode,p),g.return=h,g;case Zn:return g=La(g),f(h,g,p)}if(qi(g)||Oi(g))return g=Ua(g,h.mode,p,null),g.return=h,g;if(typeof g.then=="function")return f(h,wo(g),p);if(g.$$typeof===Mn)return f(h,Ao(h,g),p);So(h,g)}return null}function d(h,g,p,y){var C=g!==null?g.key:null;if(typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint")return C!==null?null:o(h,g,""+p,y);if(typeof p=="object"&&p!==null){switch(p.$$typeof){case fo:return p.key===C?u(h,g,p,y):null;case Pi:return p.key===C?c(h,g,p,y):null;case Zn:return p=La(p),d(h,g,p,y)}if(qi(p)||Oi(p))return C!==null?null:s(h,g,p,y,null);if(typeof p.then=="function")return d(h,g,wo(p),y);if(p.$$typeof===Mn)return d(h,g,Ao(h,p),y);So(h,p)}return null}function m(h,g,p,y,C){if(typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint")return h=h.get(p)||null,o(g,h,""+y,C);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case fo:return h=h.get(y.key===null?p:y.key)||null,u(g,h,y,C);case Pi:return h=h.get(y.key===null?p:y.key)||null,c(g,h,y,C);case Zn:return y=La(y),m(h,g,p,y,C)}if(qi(y)||Oi(y))return h=h.get(p)||null,s(g,h,y,C,null);if(typeof y.then=="function")return m(h,g,p,wo(y),C);if(y.$$typeof===Mn)return m(h,g,p,Ao(g,y),C);So(g,y)}return null}function v(h,g,p,y){for(var C=null,R=null,T=g,M=g=0,w=null;T!==null&&M<p.length;M++){T.index>M?(w=T,T=null):w=T.sibling;var D=d(h,T,p[M],y);if(D===null){T===null&&(T=w);break}e&&T&&D.alternate===null&&t(h,T),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D,T=w}if(M===p.length)return n(h,T),V&&Dn(h,M),C;if(T===null){for(;M<p.length;M++)T=f(h,p[M],y),T!==null&&(g=i(T,g,M),R===null?C=T:R.sibling=T,R=T);return V&&Dn(h,M),C}for(T=a(T);M<p.length;M++)w=m(T,h,M,p[M],y),w!==null&&(e&&w.alternate!==null&&T.delete(w.key===null?M:w.key),g=i(w,g,M),R===null?C=w:R.sibling=w,R=w);return e&&T.forEach(function(k){return t(h,k)}),V&&Dn(h,M),C}function A(h,g,p,y){if(p==null)throw Error(S(151));for(var C=null,R=null,T=g,M=g=0,w=null,D=p.next();T!==null&&!D.done;M++,D=p.next()){T.index>M?(w=T,T=null):w=T.sibling;var k=d(h,T,D.value,y);if(k===null){T===null&&(T=w);break}e&&T&&k.alternate===null&&t(h,T),g=i(k,g,M),R===null?C=k:R.sibling=k,R=k,T=w}if(D.done)return n(h,T),V&&Dn(h,M),C;if(T===null){for(;!D.done;M++,D=p.next())D=f(h,D.value,y),D!==null&&(g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return V&&Dn(h,M),C}for(T=a(T);!D.done;M++,D=p.next())D=m(T,h,M,D.value,y),D!==null&&(e&&D.alternate!==null&&T.delete(D.key===null?M:D.key),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return e&&T.forEach(function(se){return t(h,se)}),V&&Dn(h,M),C}function b(h,g,p,y){if(typeof p=="object"&&p!==null&&p.type===Sl&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case fo:e:{for(var C=p.key;g!==null;){if(g.key===C){if(C=p.type,C===Sl){if(g.tag===7){n(h,g.sibling),y=l(g,p.props.children),y.return=h,h=y;break e}}else if(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Zn&&La(C)===g.type){n(h,g.sibling),y=l(g,p.props),Li(y,p),y.return=h,h=y;break e}n(h,g);break}else t(h,g);g=g.sibling}p.type===Sl?(y=Ua(p.props.children,h.mode,y,p.key),y.return=h,h=y):(y=ko(p.type,p.key,p.props,null,h.mode,y),Li(y,p),y.return=h,h=y)}return r(h);case Pi:e:{for(C=p.key;g!==null;){if(g.key===C)if(g.tag===4&&g.stateNode.containerInfo===p.containerInfo&&g.stateNode.implementation===p.implementation){n(h,g.sibling),y=l(g,p.children||[]),y.return=h,h=y;break e}else{n(h,g);break}else t(h,g);g=g.sibling}y=Wc(p,h.mode,y),y.return=h,h=y}return r(h);case Zn:return p=La(p),b(h,g,p,y)}if(qi(p))return v(h,g,p,y);if(Oi(p)){if(C=Oi(p),typeof C!="function")throw Error(S(150));return p=C.call(p),A(h,g,p,y)}if(typeof p.then=="function")return b(h,g,wo(p),y);if(p.$$typeof===Mn)return b(h,g,Ao(h,p),y);So(h,p)}return typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint"?(p=""+p,g!==null&&g.tag===6?(n(h,g.sibling),y=l(g,p),y.return=h,h=y):(n(h,g),y=Zc(p,h.mode,y),y.return=h,h=y),r(h)):n(h,g)}return function(h,g,p,y){try{sr=0;var C=b(h,g,p,y);return Ul=null,C}catch(T){if(T===ti||T===Eu)throw T;var R=Tt(29,T,null,h.mode);return R.lanes=y,R.return=h,R}finally{}}}var Ya=ap(!0),lp=ap(!1),Wn=!1;function Nd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Gs(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function ua(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ca(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(J&2)!==0){var l=a.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),a.pending=t,t=Io(e),Zh(e,null,n),t}return Tu(e,a,t,n),Io(e)}function Zi(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Sh(e,n)}}function Jc(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var l=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var r={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};i===null?l=i=r:i=i.next=r,n=n.next}while(n!==null);i===null?l=i=t:i=i.next=t}else l=i=t;n={baseState:a.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ps=!1;function Wi(){if(Ps){var e=zl;if(e!==null)throw e}}function Ii(e,t,n,a){Ps=!1;var l=e.updateQueue;Wn=!1;var i=l.firstBaseUpdate,r=l.lastBaseUpdate,o=l.shared.pending;if(o!==null){l.shared.pending=null;var u=o,c=u.next;u.next=null,r===null?i=c:r.next=c,r=u;var s=e.alternate;s!==null&&(s=s.updateQueue,o=s.lastBaseUpdate,o!==r&&(o===null?s.firstBaseUpdate=c:o.next=c,s.lastBaseUpdate=u))}if(i!==null){var f=l.baseState;r=0,s=c=u=null,o=i;do{var d=o.lane&-536870913,m=d!==o.lane;if(m?(Y&d)===d:(a&d)===d){d!==0&&d===Yl&&(Ps=!0),s!==null&&(s=s.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});e:{var v=e,A=o;d=t;var b=n;switch(A.tag){case 1:if(v=A.payload,typeof v=="function"){f=v.call(b,f,d);break e}f=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=A.payload,d=typeof v=="function"?v.call(b,f,d):v,d==null)break e;f=ve({},f,d);break e;case 2:Wn=!0}}d=o.callback,d!==null&&(e.flags|=64,m&&(e.flags|=8192),m=l.callbacks,m===null?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:o.tag,payload:o.payload,callback:o.callback,next:null},s===null?(c=s=m,u=f):s=s.next=m,r|=d;if(o=o.next,o===null){if(o=l.shared.pending,o===null)break;m=o,o=m.next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}while(!0);s===null&&(u=f),l.baseState=u,l.firstBaseUpdate=c,l.lastBaseUpdate=s,i===null&&(l.shared.lanes=0),va|=r,e.lanes=r,e.memoizedState=f}}function ip(e,t){if(typeof e!="function")throw Error(S(191,e));e.call(t)}function rp(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)ip(n[e],t)}var Vl=mn(null),tu=mn(0);function hm(e,t){e=Gn,ge(tu,e),ge(Vl,t),Gn=e|t.baseLanes}function qs(){ge(tu,Gn),ge(Vl,Vl.current)}function Od(){Gn=tu.current,Fe(Vl),Fe(tu)}var Nt=mn(null),Xt=null;function Jn(e){var t=e.alternate;ge(xe,xe.current&1),ge(Nt,e),Xt===null&&(t===null||Vl.current!==null||t.memoizedState!==null)&&(Xt=e)}function Fs(e){ge(xe,xe.current),ge(Nt,e),Xt===null&&(Xt=e)}function op(e){e.tag===22?(ge(xe,xe.current),ge(Nt,e),Xt===null&&(Xt=e)):$n(e)}function $n(){ge(xe,xe.current),ge(Nt,Nt.current)}function Rt(e){Fe(Nt),Xt===e&&(Xt=null),Fe(xe)}var xe=mn(0);function nu(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||od(n)||ud(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Hn=0,G=null,re=null,Ne=null,au=!1,Gl=!1,Va=!1,lu=0,dr=0,Pl=null,UA=0;function Re(){throw Error(S(321))}function kd(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Bt(e[n],t[n]))return!1;return!0}function Ld(e,t,n,a,l,i){return Hn=i,G=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,L.H=e===null||e.memoizedState===null?Up:Xd,Va=!1,i=n(a,l),Va=!1,Gl&&(i=cp(t,n,a,l)),up(e),i}function up(e){L.H=fr;var t=re!==null&&re.next!==null;if(Hn=0,Ne=re=G=null,au=!1,dr=0,Pl=null,t)throw Error(S(300));e===null||Le||(e=e.dependencies,e!==null&&$o(e)&&(Le=!0))}function cp(e,t,n,a){G=e;var l=0;do{if(Gl&&(Pl=null),dr=0,Gl=!1,25<=l)throw Error(S(301));if(l+=1,Ne=re=null,e.updateQueue!=null){var i=e.updateQueue;i.lastEffect=null,i.events=null,i.stores=null,i.memoCache!=null&&(i.memoCache.index=0)}L.H=Gp,i=t(n,a)}while(Gl);return i}function GA(){var e=L.H,t=e.useState()[0];return t=typeof t.then=="function"?Tr(t):t,e=e.useState()[0],(re!==null?re.memoizedState:null)!==e&&(G.flags|=1024),t}function Hd(){var e=lu!==0;return lu=0,e}function zd(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Ud(e){if(au){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}au=!1}Hn=0,Ne=re=G=null,Gl=!1,dr=lu=0,Pl=null}function ut(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ne===null?G.memoizedState=Ne=e:Ne=Ne.next=e,Ne}function Me(){if(re===null){var e=G.alternate;e=e!==null?e.memoizedState:null}else e=re.next;var t=Ne===null?G.memoizedState:Ne.next;if(t!==null)Ne=t,re=e;else{if(e===null)throw G.alternate===null?Error(S(467)):Error(S(310));re=e,e={memoizedState:re.memoizedState,baseState:re.baseState,baseQueue:re.baseQueue,queue:re.queue,next:null},Ne===null?G.memoizedState=Ne=e:Ne=Ne.next=e}return Ne}function Du(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Tr(e){var t=dr;return dr+=1,Pl===null&&(Pl=[]),e=np(Pl,e,t),t=G,(Ne===null?t.memoizedState:Ne.next)===null&&(t=t.alternate,L.H=t===null||t.memoizedState===null?Up:Xd),e}function xu(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Tr(e);if(e.$$typeof===Mn)return Qe(e)}throw Error(S(438,String(e)))}function Gd(e){var t=null,n=G.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var a=G.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(l){return l.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=Du(),G.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),a=0;a<e;a++)n[a]=Rb;return t.index++,n}function zn(e,t){return typeof t=="function"?t(e):t}function Ho(e){var t=Me();return Pd(t,re,e)}function Pd(e,t,n){var a=e.queue;if(a===null)throw Error(S(311));a.lastRenderedReducer=n;var l=e.baseQueue,i=a.pending;if(i!==null){if(l!==null){var r=l.next;l.next=i.next,i.next=r}t.baseQueue=l=i,a.pending=null}if(i=e.baseState,l===null)e.memoizedState=i;else{t=l.next;var o=r=null,u=null,c=t,s=!1;do{var f=c.lane&-536870913;if(f!==c.lane?(Y&f)===f:(Hn&f)===f){var d=c.revertLane;if(d===0)u!==null&&(u=u.next={lane:0,revertLane:0,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),f===Yl&&(s=!0);else if((Hn&d)===d){c=c.next,d===Yl&&(s=!0);continue}else f={lane:0,revertLane:c.revertLane,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=f,r=i):u=u.next=f,G.lanes|=d,va|=d;f=c.action,Va&&n(i,f),i=c.hasEagerState?c.eagerState:n(i,f)}else d={lane:f,revertLane:c.revertLane,gesture:c.gesture,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=d,r=i):u=u.next=d,G.lanes|=f,va|=f;c=c.next}while(c!==null&&c!==t);if(u===null?r=i:u.next=o,!Bt(i,e.memoizedState)&&(Le=!0,s&&(n=zl,n!==null)))throw n;e.memoizedState=i,e.baseState=r,e.baseQueue=u,a.lastRenderedState=i}return l===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function $c(e){var t=Me(),n=t.queue;if(n===null)throw Error(S(311));n.lastRenderedReducer=e;var a=n.dispatch,l=n.pending,i=t.memoizedState;if(l!==null){n.pending=null;var r=l=l.next;do i=e(i,r.action),r=r.next;while(r!==l);Bt(i,t.memoizedState)||(Le=!0),t.memoizedState=i,t.baseQueue===null&&(t.baseState=i),n.lastRenderedState=i}return[i,a]}function sp(e,t,n){var a=G,l=Me(),i=V;if(i){if(n===void 0)throw Error(S(407));n=n()}else n=t();var r=!Bt((re||l).memoizedState,n);if(r&&(l.memoizedState=n,Le=!0),l=l.queue,qd(gp.bind(null,a,l,e),[e]),l.getSnapshot!==t||r||Ne!==null&&Ne.memoizedState.tag&1){if(a.flags|=2048,Xl(9,{destroy:void 0},fp.bind(null,a,l,n,t),null),ue===null)throw Error(S(349));i||(Hn&127)!==0||dp(a,t,n)}return n}function dp(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=G.updateQueue,t===null?(t=Du(),G.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function fp(e,t,n,a){t.value=n,t.getSnapshot=a,mp(t)&&hp(e)}function gp(e,t,n){return n(function(){mp(t)&&hp(e)})}function mp(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Bt(e,n)}catch{return!0}}function hp(e){var t=Wa(e,2);t!==null&&yt(t,e,2)}function js(e){var t=ut();if(typeof e=="function"){var n=e;if(e=n(),Va){ta(!0);try{n()}finally{ta(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:e},t}function pp(e,t,n,a){return e.baseState=n,Pd(e,re,typeof a=="function"?a:zn)}function PA(e,t,n,a,l){if(_u(e))throw Error(S(485));if(e=t.action,e!==null){var i={payload:l,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(r){i.listeners.push(r)}};L.T!==null?n(!0):i.isTransition=!1,a(i),n=t.pending,n===null?(i.next=t.pending=i,yp(t,i)):(i.next=n.next,t.pending=n.next=i)}}function yp(e,t){var n=t.action,a=t.payload,l=e.state;if(t.isTransition){var i=L.T,r={};L.T=r;try{var o=n(l,a),u=L.S;u!==null&&u(r,o),pm(e,t,o)}catch(c){Ys(e,t,c)}finally{i!==null&&r.types!==null&&(i.types=r.types),L.T=i}}else try{i=n(l,a),pm(e,t,i)}catch(c){Ys(e,t,c)}}function pm(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?n.then(function(a){ym(e,t,a)},function(a){return Ys(e,t,a)}):ym(e,t,n)}function ym(e,t,n){t.status="fulfilled",t.value=n,vp(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,yp(e,n)))}function Ys(e,t,n){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=n,vp(t),t=t.next;while(t!==a)}e.action=null}function vp(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function bp(e,t){return t}function vm(e,t){if(V){var n=ue.formState;if(n!==null){e:{var a=G;if(V){if(ye){t:{for(var l=ye,i=Vt;l.nodeType!==8;){if(!i){l=null;break t}if(l=Qt(l.nextSibling),l===null){l=null;break t}}i=l.data,l=i==="F!"||i==="F"?l:null}if(l){ye=Qt(l.nextSibling),a=l.data==="F!";break e}}pa(a)}a=!1}a&&(t=n[0])}}return n=ut(),n.memoizedState=n.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:bp,lastRenderedState:t},n.queue=a,n=Lp.bind(null,G,a),a.dispatch=n,a=js(!1),i=Vd.bind(null,G,!1,a.queue),a=ut(),l={state:t,dispatch:null,action:e,pending:null},a.queue=l,n=PA.bind(null,G,l,i,n),l.dispatch=n,a.memoizedState=e,[t,n,!1]}function bm(e){var t=Me();return Ap(t,re,e)}function Ap(e,t,n){if(t=Pd(e,t,bp)[0],e=Ho(zn)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=Tr(t)}catch(r){throw r===ti?Eu:r}else a=t;t=Me();var l=t.queue,i=l.dispatch;return n!==t.memoizedState&&(G.flags|=2048,Xl(9,{destroy:void 0},qA.bind(null,l,n),null)),[a,i,e]}function qA(e,t){e.action=t}function Am(e){var t=Me(),n=re;if(n!==null)return Ap(t,n,e);Me(),t=t.memoizedState,n=Me();var a=n.queue.dispatch;return n.memoizedState=e,[t,a,!1]}function Xl(e,t,n,a){return e={tag:e,create:n,deps:a,inst:t,next:null},t=G.updateQueue,t===null&&(t=Du(),G.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function wp(){return Me().memoizedState}function zo(e,t,n,a){var l=ut();G.flags|=e,l.memoizedState=Xl(1|t,{destroy:void 0},n,a===void 0?null:a)}function Mu(e,t,n,a){var l=Me();a=a===void 0?null:a;var i=l.memoizedState.inst;re!==null&&a!==null&&kd(a,re.memoizedState.deps)?l.memoizedState=Xl(t,i,n,a):(G.flags|=e,l.memoizedState=Xl(1|t,i,n,a))}function wm(e,t){zo(8390656,8,e,t)}function qd(e,t){Mu(2048,8,e,t)}function FA(e){G.flags|=4;var t=G.updateQueue;if(t===null)t=Du(),G.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function Sp(e){var t=Me().memoizedState;return FA({ref:t,nextImpl:e}),function(){if((J&2)!==0)throw Error(S(440));return t.impl.apply(void 0,arguments)}}function Cp(e,t){return Mu(4,2,e,t)}function Rp(e,t){return Mu(4,4,e,t)}function Tp(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Ep(e,t,n){n=n!=null?n.concat([e]):null,Mu(4,4,Tp.bind(null,t,e),n)}function Fd(){}function Dp(e,t){var n=Me();t=t===void 0?null:t;var a=n.memoizedState;return t!==null&&kd(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function xp(e,t){var n=Me();t=t===void 0?null:t;var a=n.memoizedState;if(t!==null&&kd(t,a[1]))return a[0];if(a=e(),Va){ta(!0);try{e()}finally{ta(!1)}}return n.memoizedState=[a,t],a}function jd(e,t,n){return n===void 0||(Hn&1073741824)!==0&&(Y&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=py(),G.lanes|=e,va|=e,n)}function Mp(e,t,n,a){return Bt(n,t)?n:Vl.current!==null?(e=jd(e,n,a),Bt(e,t)||(Le=!0),e):(Hn&42)===0||(Hn&1073741824)!==0&&(Y&261930)===0?(Le=!0,e.memoizedState=n):(e=py(),G.lanes|=e,va|=e,t)}function _p(e,t,n,a,l){var i=$.p;$.p=i!==0&&8>i?i:8;var r=L.T,o={};L.T=o,Vd(e,!1,t,n);try{var u=l(),c=L.S;if(c!==null&&c(o,u),u!==null&&typeof u=="object"&&typeof u.then=="function"){var s=zA(u,a);Ji(e,t,s,_t(e))}else Ji(e,t,a,_t(e))}catch(f){Ji(e,t,{then:function(){},status:"rejected",reason:f},_t())}finally{$.p=i,r!==null&&o.types!==null&&(r.types=o.types),L.T=r}}function jA(){}function Vs(e,t,n,a){if(e.tag!==5)throw Error(S(476));var l=Bp(e).queue;_p(e,l,t,za,n===null?jA:function(){return Np(e),n(a)})}function Bp(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:za,baseState:za,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:za},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Np(e){var t=Bp(e);t.next===null&&(t=e.alternate.memoizedState),Ji(e,t.next.queue,{},_t())}function Yd(){return Qe(hr)}function Op(){return Me().memoizedState}function kp(){return Me().memoizedState}function YA(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=_t();e=ua(n);var a=ca(t,e,n);a!==null&&(yt(a,t,n),Zi(a,t,n)),t={cache:Md()},e.payload=t;return}t=t.return}}function VA(e,t,n){var a=_t();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},_u(e)?Hp(t,n):(n=Td(e,t,n,a),n!==null&&(yt(n,e,a),zp(n,t,a)))}function Lp(e,t,n){var a=_t();Ji(e,t,n,a)}function Ji(e,t,n,a){var l={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(_u(e))Hp(t,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var r=t.lastRenderedState,o=i(r,n);if(l.hasEagerState=!0,l.eagerState=o,Bt(o,r))return Tu(e,t,l,0),ue===null&&Ru(),!1}catch{}finally{}if(n=Td(e,t,l,a),n!==null)return yt(n,e,a),zp(n,t,a),!0}return!1}function Vd(e,t,n,a){if(a={lane:2,revertLane:ef(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},_u(e)){if(t)throw Error(S(479))}else t=Td(e,n,a,2),t!==null&&yt(t,e,2)}function _u(e){var t=e.alternate;return e===G||t!==null&&t===G}function Hp(e,t){Gl=au=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function zp(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Sh(e,n)}}var fr={readContext:Qe,use:xu,useCallback:Re,useContext:Re,useEffect:Re,useImperativeHandle:Re,useLayoutEffect:Re,useInsertionEffect:Re,useMemo:Re,useReducer:Re,useRef:Re,useState:Re,useDebugValue:Re,useDeferredValue:Re,useTransition:Re,useSyncExternalStore:Re,useId:Re,useHostTransitionStatus:Re,useFormState:Re,useActionState:Re,useOptimistic:Re,useMemoCache:Re,useCacheRefresh:Re};fr.useEffectEvent=Re;var Up={readContext:Qe,use:xu,useCallback:function(e,t){return ut().memoizedState=[e,t===void 0?null:t],e},useContext:Qe,useEffect:wm,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,zo(4194308,4,Tp.bind(null,t,e),n)},useLayoutEffect:function(e,t){return zo(4194308,4,e,t)},useInsertionEffect:function(e,t){zo(4,2,e,t)},useMemo:function(e,t){var n=ut();t=t===void 0?null:t;var a=e();if(Va){ta(!0);try{e()}finally{ta(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=ut();if(n!==void 0){var l=n(t);if(Va){ta(!0);try{n(t)}finally{ta(!1)}}}else l=t;return a.memoizedState=a.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},a.queue=e,e=e.dispatch=VA.bind(null,G,e),[a.memoizedState,e]},useRef:function(e){var t=ut();return e={current:e},t.memoizedState=e},useState:function(e){e=js(e);var t=e.queue,n=Lp.bind(null,G,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Fd,useDeferredValue:function(e,t){var n=ut();return jd(n,e,t)},useTransition:function(){var e=js(!1);return e=_p.bind(null,G,e.queue,!0,!1),ut().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=G,l=ut();if(V){if(n===void 0)throw Error(S(407));n=n()}else{if(n=t(),ue===null)throw Error(S(349));(Y&127)!==0||dp(a,t,n)}l.memoizedState=n;var i={value:n,getSnapshot:t};return l.queue=i,wm(gp.bind(null,a,i,e),[e]),a.flags|=2048,Xl(9,{destroy:void 0},fp.bind(null,a,i,n,t),null),n},useId:function(){var e=ut(),t=ue.identifierPrefix;if(V){var n=dn,a=sn;n=(a&~(1<<32-Mt(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=lu++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=UA++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:Yd,useFormState:vm,useActionState:vm,useOptimistic:function(e){var t=ut();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Vd.bind(null,G,!0,n),n.dispatch=t,[e,t]},useMemoCache:Gd,useCacheRefresh:function(){return ut().memoizedState=YA.bind(null,G)},useEffectEvent:function(e){var t=ut(),n={impl:e};return t.memoizedState=n,function(){if((J&2)!==0)throw Error(S(440));return n.impl.apply(void 0,arguments)}}},Xd={readContext:Qe,use:xu,useCallback:Dp,useContext:Qe,useEffect:qd,useImperativeHandle:Ep,useInsertionEffect:Cp,useLayoutEffect:Rp,useMemo:xp,useReducer:Ho,useRef:wp,useState:function(){return Ho(zn)},useDebugValue:Fd,useDeferredValue:function(e,t){var n=Me();return Mp(n,re.memoizedState,e,t)},useTransition:function(){var e=Ho(zn)[0],t=Me().memoizedState;return[typeof e=="boolean"?e:Tr(e),t]},useSyncExternalStore:sp,useId:Op,useHostTransitionStatus:Yd,useFormState:bm,useActionState:bm,useOptimistic:function(e,t){var n=Me();return pp(n,re,e,t)},useMemoCache:Gd,useCacheRefresh:kp};Xd.useEffectEvent=Sp;var Gp={readContext:Qe,use:xu,useCallback:Dp,useContext:Qe,useEffect:qd,useImperativeHandle:Ep,useInsertionEffect:Cp,useLayoutEffect:Rp,useMemo:xp,useReducer:$c,useRef:wp,useState:function(){return $c(zn)},useDebugValue:Fd,useDeferredValue:function(e,t){var n=Me();return re===null?jd(n,e,t):Mp(n,re.memoizedState,e,t)},useTransition:function(){var e=$c(zn)[0],t=Me().memoizedState;return[typeof e=="boolean"?e:Tr(e),t]},useSyncExternalStore:sp,useId:Op,useHostTransitionStatus:Yd,useFormState:Am,useActionState:Am,useOptimistic:function(e,t){var n=Me();return re!==null?pp(n,re,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:Gd,useCacheRefresh:kp};Gp.useEffectEvent=Sp;function es(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:ve({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Xs={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=_t(),l=ua(a);l.payload=t,n!=null&&(l.callback=n),t=ca(e,l,a),t!==null&&(yt(t,e,a),Zi(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=_t(),l=ua(a);l.tag=1,l.payload=t,n!=null&&(l.callback=n),t=ca(e,l,a),t!==null&&(yt(t,e,a),Zi(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=_t(),a=ua(n);a.tag=2,t!=null&&(a.callback=t),t=ca(e,a,n),t!==null&&(yt(t,e,n),Zi(t,e,n))}};function Sm(e,t,n,a,l,i,r){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,i,r):t.prototype&&t.prototype.isPureReactComponent?!or(n,a)||!or(l,i):!0}function Cm(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&Xs.enqueueReplaceState(t,t.state,null)}function Xa(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=ve({},n));for(var l in e)n[l]===void 0&&(n[l]=e[l])}return n}function Pp(e){Wo(e)}function qp(e){console.error(e)}function Fp(e){Wo(e)}function iu(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function Rm(e,t,n){try{var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(l){setTimeout(function(){throw l})}}function Qs(e,t,n){return n=ua(n),n.tag=3,n.payload={element:null},n.callback=function(){iu(e,t)},n}function jp(e){return e=ua(e),e.tag=3,e}function Yp(e,t,n,a){var l=n.type.getDerivedStateFromError;if(typeof l=="function"){var i=a.value;e.payload=function(){return l(i)},e.callback=function(){Rm(t,n,a)}}var r=n.stateNode;r!==null&&typeof r.componentDidCatch=="function"&&(e.callback=function(){Rm(t,n,a),typeof l!="function"&&(sa===null?sa=new Set([this]):sa.add(this));var o=a.stack;this.componentDidCatch(a.value,{componentStack:o!==null?o:""})})}function XA(e,t,n,a,l){if(n.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&ei(t,n,l,!0),n=Nt.current,n!==null){switch(n.tag){case 31:case 13:return Xt===null?su():n.alternate===null&&Te===0&&(Te=3),n.flags&=-257,n.flags|=65536,n.lanes=l,a===eu?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),ds(e,a,l)),!1;case 22:return n.flags|=65536,a===eu?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),ds(e,a,l)),!1}throw Error(S(435,n.tag))}return ds(e,a,l),su(),!1}if(V)return t=Nt.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=l,a!==ks&&(e=Error(S(422),{cause:a}),cr(Yt(e,n)))):(a!==ks&&(t=Error(S(423),{cause:a}),cr(Yt(t,n))),e=e.current.alternate,e.flags|=65536,l&=-l,e.lanes|=l,a=Yt(a,n),l=Qs(e.stateNode,a,l),Jc(e,l),Te!==4&&(Te=2)),!1;var i=Error(S(520),{cause:a});if(i=Yt(i,n),tr===null?tr=[i]:tr.push(i),Te!==4&&(Te=2),t===null)return!0;a=Yt(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=l&-l,n.lanes|=e,e=Qs(n.stateNode,a,e),Jc(n,e),!1;case 1:if(t=n.type,i=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||i!==null&&typeof i.componentDidCatch=="function"&&(sa===null||!sa.has(i))))return n.flags|=65536,l&=-l,n.lanes|=l,l=jp(l),Yp(l,e,n,a),Jc(n,l),!1}n=n.return}while(n!==null);return!1}var Qd=Error(S(461)),Le=!1;function Ye(e,t,n,a){t.child=e===null?lp(t,null,n,a):Ya(t,e.child,n,a)}function Tm(e,t,n,a,l){n=n.render;var i=t.ref;if("ref"in a){var r={};for(var o in a)o!=="ref"&&(r[o]=a[o])}else r=a;return ja(t),a=Ld(e,t,n,r,i,l),o=Hd(),e!==null&&!Le?(zd(e,t,l),Un(e,t,l)):(V&&o&&Dd(t),t.flags|=1,Ye(e,t,a,l),t.child)}function Em(e,t,n,a,l){if(e===null){var i=n.type;return typeof i=="function"&&!Ed(i)&&i.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=i,Vp(e,t,i,a,l)):(e=ko(n.type,null,a,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!Kd(e,l)){var r=i.memoizedProps;if(n=n.compare,n=n!==null?n:or,n(r,a)&&e.ref===t.ref)return Un(e,t,l)}return t.flags|=1,e=Nn(i,a),e.ref=t.ref,e.return=t,t.child=e}function Vp(e,t,n,a,l){if(e!==null){var i=e.memoizedProps;if(or(i,a)&&e.ref===t.ref)if(Le=!1,t.pendingProps=a=i,Kd(e,l))(e.flags&131072)!==0&&(Le=!0);else return t.lanes=e.lanes,Un(e,t,l)}return Ks(e,t,n,a,l)}function Xp(e,t,n,a){var l=a.children,i=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((t.flags&128)!==0){if(i=i!==null?i.baseLanes|n:n,e!==null){for(a=t.child=e.child,l=0;a!==null;)l=l|a.lanes|a.childLanes,a=a.sibling;a=l&~i}else a=0,t.child=null;return Dm(e,t,i,n,a)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Lo(t,i!==null?i.cachePool:null),i!==null?hm(t,i):qs(),op(t);else return a=t.lanes=536870912,Dm(e,t,i!==null?i.baseLanes|n:n,n,a)}else i!==null?(Lo(t,i.cachePool),hm(t,i),$n(t),t.memoizedState=null):(e!==null&&Lo(t,null),qs(),$n(t));return Ye(e,t,l,n),t.child}function ji(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Dm(e,t,n,a,l){var i=_d();return i=i===null?null:{parent:ke._currentValue,pool:i},t.memoizedState={baseLanes:n,cachePool:i},e!==null&&Lo(t,null),qs(),op(t),e!==null&&ei(e,t,a,!0),t.childLanes=l,null}function Uo(e,t){return t=ru({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function xm(e,t,n){return Ya(t,e.child,null,n),e=Uo(t,t.pendingProps),e.flags|=2,Rt(t),t.memoizedState=null,e}function QA(e,t,n){var a=t.pendingProps,l=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(V){if(a.mode==="hidden")return e=Uo(t,a),t.lanes=536870912,ji(null,e);if(Fs(t),(e=ye)?(e=Uy(e,Vt),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:ha!==null?{id:sn,overflow:dn}:null,retryLane:536870912,hydrationErrors:null},n=Ih(e),n.return=t,t.child=n,Xe=t,ye=null)):e=null,e===null)throw pa(t);return t.lanes=536870912,null}return Uo(t,a)}var i=e.memoizedState;if(i!==null){var r=i.dehydrated;if(Fs(t),l)if(t.flags&256)t.flags&=-257,t=xm(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(S(558));else if(Le||ei(e,t,n,!1),l=(n&e.childLanes)!==0,Le||l){if(a=ue,a!==null&&(r=Ch(a,n),r!==0&&r!==i.retryLane))throw i.retryLane=r,Wa(e,r),yt(a,e,r),Qd;su(),t=xm(e,t,n)}else e=i.treeContext,ye=Qt(r.nextSibling),Xe=t,V=!0,oa=null,Vt=!1,e!==null&&$h(t,e),t=Uo(t,a),t.flags|=4096;return t}return e=Nn(e.child,{mode:a.mode,children:a.children}),e.ref=t.ref,t.child=e,e.return=t,e}function Go(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(S(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Ks(e,t,n,a,l){return ja(t),n=Ld(e,t,n,a,void 0,l),a=Hd(),e!==null&&!Le?(zd(e,t,l),Un(e,t,l)):(V&&a&&Dd(t),t.flags|=1,Ye(e,t,n,l),t.child)}function Mm(e,t,n,a,l,i){return ja(t),t.updateQueue=null,n=cp(t,a,n,l),up(e),a=Hd(),e!==null&&!Le?(zd(e,t,i),Un(e,t,i)):(V&&a&&Dd(t),t.flags|=1,Ye(e,t,n,i),t.child)}function _m(e,t,n,a,l){if(ja(t),t.stateNode===null){var i=_l,r=n.contextType;typeof r=="object"&&r!==null&&(i=Qe(r)),i=new n(a,i),t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,i.updater=Xs,t.stateNode=i,i._reactInternals=t,i=t.stateNode,i.props=a,i.state=t.memoizedState,i.refs={},Nd(t),r=n.contextType,i.context=typeof r=="object"&&r!==null?Qe(r):_l,i.state=t.memoizedState,r=n.getDerivedStateFromProps,typeof r=="function"&&(es(t,n,r,a),i.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof i.getSnapshotBeforeUpdate=="function"||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(r=i.state,typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount(),r!==i.state&&Xs.enqueueReplaceState(i,i.state,null),Ii(t,a,i,l),Wi(),i.state=t.memoizedState),typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){i=t.stateNode;var o=t.memoizedProps,u=Xa(n,o);i.props=u;var c=i.context,s=n.contextType;r=_l,typeof s=="object"&&s!==null&&(r=Qe(s));var f=n.getDerivedStateFromProps;s=typeof f=="function"||typeof i.getSnapshotBeforeUpdate=="function",o=t.pendingProps!==o,s||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(o||c!==r)&&Cm(t,i,a,r),Wn=!1;var d=t.memoizedState;i.state=d,Ii(t,a,i,l),Wi(),c=t.memoizedState,o||d!==c||Wn?(typeof f=="function"&&(es(t,n,f,a),c=t.memoizedState),(u=Wn||Sm(t,n,u,a,d,c,r))?(s||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=c),i.props=a,i.state=c,i.context=r,a=u):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{i=t.stateNode,Gs(e,t),r=t.memoizedProps,s=Xa(n,r),i.props=s,f=t.pendingProps,d=i.context,c=n.contextType,u=_l,typeof c=="object"&&c!==null&&(u=Qe(c)),o=n.getDerivedStateFromProps,(c=typeof o=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(r!==f||d!==u)&&Cm(t,i,a,u),Wn=!1,d=t.memoizedState,i.state=d,Ii(t,a,i,l),Wi();var m=t.memoizedState;r!==f||d!==m||Wn||e!==null&&e.dependencies!==null&&$o(e.dependencies)?(typeof o=="function"&&(es(t,n,o,a),m=t.memoizedState),(s=Wn||Sm(t,n,s,a,d,m,u)||e!==null&&e.dependencies!==null&&$o(e.dependencies))?(c||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(a,m,u),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(a,m,u)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=m),i.props=a,i.state=m,i.context=u,a=s):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),a=!1)}return i=a,Go(e,t),a=(t.flags&128)!==0,i||a?(i=t.stateNode,n=a&&typeof n.getDerivedStateFromError!="function"?null:i.render(),t.flags|=1,e!==null&&a?(t.child=Ya(t,e.child,null,l),t.child=Ya(t,null,n,l)):Ye(e,t,n,l),t.memoizedState=i.state,e=t.child):e=Un(e,t,l),e}function Bm(e,t,n,a){return Fa(),t.flags|=256,Ye(e,t,n,a),t.child}var ts={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ns(e){return{baseLanes:e,cachePool:tp()}}function as(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Et),e}function Qp(e,t,n){var a=t.pendingProps,l=!1,i=(t.flags&128)!==0,r;if((r=i)||(r=e!==null&&e.memoizedState===null?!1:(xe.current&2)!==0),r&&(l=!0,t.flags&=-129),r=(t.flags&32)!==0,t.flags&=-33,e===null){if(V){if(l?Jn(t):$n(t),(e=ye)?(e=Uy(e,Vt),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:ha!==null?{id:sn,overflow:dn}:null,retryLane:536870912,hydrationErrors:null},n=Ih(e),n.return=t,t.child=n,Xe=t,ye=null)):e=null,e===null)throw pa(t);return ud(e)?t.lanes=32:t.lanes=536870912,null}var o=a.children;return a=a.fallback,l?($n(t),l=t.mode,o=ru({mode:"hidden",children:o},l),a=Ua(a,l,n,null),o.return=t,a.return=t,o.sibling=a,t.child=o,a=t.child,a.memoizedState=ns(n),a.childLanes=as(e,r,n),t.memoizedState=ts,ji(null,a)):(Jn(t),Zs(t,o))}var u=e.memoizedState;if(u!==null&&(o=u.dehydrated,o!==null)){if(i)t.flags&256?(Jn(t),t.flags&=-257,t=ls(e,t,n)):t.memoizedState!==null?($n(t),t.child=e.child,t.flags|=128,t=null):($n(t),o=a.fallback,l=t.mode,a=ru({mode:"visible",children:a.children},l),o=Ua(o,l,n,null),o.flags|=2,a.return=t,o.return=t,a.sibling=o,t.child=a,Ya(t,e.child,null,n),a=t.child,a.memoizedState=ns(n),a.childLanes=as(e,r,n),t.memoizedState=ts,t=ji(null,a));else if(Jn(t),ud(o)){if(r=o.nextSibling&&o.nextSibling.dataset,r)var c=r.dgst;r=c,a=Error(S(419)),a.stack="",a.digest=r,cr({value:a,source:null,stack:null}),t=ls(e,t,n)}else if(Le||ei(e,t,n,!1),r=(n&e.childLanes)!==0,Le||r){if(r=ue,r!==null&&(a=Ch(r,n),a!==0&&a!==u.retryLane))throw u.retryLane=a,Wa(e,a),yt(r,e,a),Qd;od(o)||su(),t=ls(e,t,n)}else od(o)?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,ye=Qt(o.nextSibling),Xe=t,V=!0,oa=null,Vt=!1,e!==null&&$h(t,e),t=Zs(t,a.children),t.flags|=4096);return t}return l?($n(t),o=a.fallback,l=t.mode,u=e.child,c=u.sibling,a=Nn(u,{mode:"hidden",children:a.children}),a.subtreeFlags=u.subtreeFlags&65011712,c!==null?o=Nn(c,o):(o=Ua(o,l,n,null),o.flags|=2),o.return=t,a.return=t,a.sibling=o,t.child=a,ji(null,a),a=t.child,o=e.child.memoizedState,o===null?o=ns(n):(l=o.cachePool,l!==null?(u=ke._currentValue,l=l.parent!==u?{parent:u,pool:u}:l):l=tp(),o={baseLanes:o.baseLanes|n,cachePool:l}),a.memoizedState=o,a.childLanes=as(e,r,n),t.memoizedState=ts,ji(e.child,a)):(Jn(t),n=e.child,e=n.sibling,n=Nn(n,{mode:"visible",children:a.children}),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Zs(e,t){return t=ru({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function ru(e,t){return e=Tt(22,e,null,t),e.lanes=0,e}function ls(e,t,n){return Ya(t,e.child,null,n),e=Zs(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Nm(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),Hs(e.return,t,n)}function is(e,t,n,a,l,i){var r=e.memoizedState;r===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:l,treeForkCount:i}:(r.isBackwards=t,r.rendering=null,r.renderingStartTime=0,r.last=a,r.tail=n,r.tailMode=l,r.treeForkCount=i)}function Kp(e,t,n){var a=t.pendingProps,l=a.revealOrder,i=a.tail;a=a.children;var r=xe.current,o=(r&2)!==0;if(o?(r=r&1|2,t.flags|=128):r&=1,ge(xe,r),Ye(e,t,a,n),a=V?ur:0,!o&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Nm(e,n,t);else if(e.tag===19)Nm(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&nu(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),is(t,!1,l,n,i,a);break;case"backwards":case"unstable_legacy-backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&nu(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}is(t,!0,n,null,i,a);break;case"together":is(t,!1,null,null,void 0,a);break;default:t.memoizedState=null}return t.child}function Un(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),va|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(ei(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(S(153));if(t.child!==null){for(e=t.child,n=Nn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Nn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Kd(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&$o(e)))}function KA(e,t,n){switch(t.tag){case 3:Xo(t,t.stateNode.containerInfo),In(t,ke,e.memoizedState.cache),Fa();break;case 27:case 5:Cs(t);break;case 4:Xo(t,t.stateNode.containerInfo);break;case 10:In(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Fs(t),null;break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Jn(t),t.flags|=128,null):(n&t.child.childLanes)!==0?Qp(e,t,n):(Jn(t),e=Un(e,t,n),e!==null?e.sibling:null);Jn(t);break;case 19:var l=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||(ei(e,t,n,!1),a=(n&t.childLanes)!==0),l){if(a)return Kp(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),ge(xe,xe.current),a)break;return null;case 22:return t.lanes=0,Xp(e,t,n,t.pendingProps);case 24:In(t,ke,e.memoizedState.cache)}return Un(e,t,n)}function Zp(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)Le=!0;else{if(!Kd(e,n)&&(t.flags&128)===0)return Le=!1,KA(e,t,n);Le=(e.flags&131072)!==0}else Le=!1,V&&(t.flags&1048576)!==0&&Jh(t,ur,t.index);switch(t.lanes=0,t.tag){case 16:e:{var a=t.pendingProps;if(e=La(t.elementType),t.type=e,typeof e=="function")Ed(e)?(a=Xa(e,a),t.tag=1,t=_m(null,t,e,a,n)):(t.tag=0,t=Ks(null,t,e,a,n));else{if(e!=null){var l=e.$$typeof;if(l===fd){t.tag=11,t=Tm(null,t,e,a,n);break e}else if(l===gd){t.tag=14,t=Em(null,t,e,a,n);break e}}throw t=ws(e)||e,Error(S(306,t,""))}}return t;case 0:return Ks(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,l=Xa(a,t.pendingProps),_m(e,t,a,l,n);case 3:e:{if(Xo(t,t.stateNode.containerInfo),e===null)throw Error(S(387));a=t.pendingProps;var i=t.memoizedState;l=i.element,Gs(e,t),Ii(t,a,null,n);var r=t.memoizedState;if(a=r.cache,In(t,ke,a),a!==i.cache&&zs(t,[ke],n,!0),Wi(),a=r.element,i.isDehydrated)if(i={element:a,isDehydrated:!1,cache:r.cache},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){t=Bm(e,t,a,n);break e}else if(a!==l){l=Yt(Error(S(424)),t),cr(l),t=Bm(e,t,a,n);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(ye=Qt(e.firstChild),Xe=t,V=!0,oa=null,Vt=!0,n=lp(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Fa(),a===l){t=Un(e,t,n);break e}Ye(e,t,a,n)}t=t.child}return t;case 26:return Go(e,t),e===null?(n=eh(t.type,null,t.pendingProps,null))?t.memoizedState=n:V||(n=t.type,e=t.pendingProps,a=mu(ra.current).createElement(n),a[Ve]=t,a[vt]=e,Ke(a,n,e),qe(a),t.stateNode=a):t.memoizedState=eh(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Cs(t),e===null&&V&&(a=t.stateNode=Gy(t.type,t.pendingProps,ra.current),Xe=t,Vt=!0,l=ye,Aa(t.type)?(cd=l,ye=Qt(a.firstChild)):ye=l),Ye(e,t,t.pendingProps.children,n),Go(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&V&&((l=a=ye)&&(a=Sw(a,t.type,t.pendingProps,Vt),a!==null?(t.stateNode=a,Xe=t,ye=Qt(a.firstChild),Vt=!1,l=!0):l=!1),l||pa(t)),Cs(t),l=t.type,i=t.pendingProps,r=e!==null?e.memoizedProps:null,a=i.children,id(l,i)?a=null:r!==null&&id(l,r)&&(t.flags|=32),t.memoizedState!==null&&(l=Ld(e,t,GA,null,null,n),hr._currentValue=l),Go(e,t),Ye(e,t,a,n),t.child;case 6:return e===null&&V&&((e=n=ye)&&(n=Cw(n,t.pendingProps,Vt),n!==null?(t.stateNode=n,Xe=t,ye=null,e=!0):e=!1),e||pa(t)),null;case 13:return Qp(e,t,n);case 4:return Xo(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Ya(t,null,a,n):Ye(e,t,a,n),t.child;case 11:return Tm(e,t,t.type,t.pendingProps,n);case 7:return Ye(e,t,t.pendingProps,n),t.child;case 8:return Ye(e,t,t.pendingProps.children,n),t.child;case 12:return Ye(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.pendingProps,In(t,t.type,a.value),Ye(e,t,a.children,n),t.child;case 9:return l=t.type._context,a=t.pendingProps.children,ja(t),l=Qe(l),a=a(l),t.flags|=1,Ye(e,t,a,n),t.child;case 14:return Em(e,t,t.type,t.pendingProps,n);case 15:return Vp(e,t,t.type,t.pendingProps,n);case 19:return Kp(e,t,n);case 31:return QA(e,t,n);case 22:return Xp(e,t,n,t.pendingProps);case 24:return ja(t),a=Qe(ke),e===null?(l=_d(),l===null&&(l=ue,i=Md(),l.pooledCache=i,i.refCount++,i!==null&&(l.pooledCacheLanes|=n),l=i),t.memoizedState={parent:a,cache:l},Nd(t),In(t,ke,l)):((e.lanes&n)!==0&&(Gs(e,t),Ii(t,null,null,n),Wi()),l=e.memoizedState,i=t.memoizedState,l.parent!==a?(l={parent:a,cache:a},t.memoizedState=l,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=l),In(t,ke,a)):(a=i.cache,In(t,ke,a),a!==l.cache&&zs(t,[ke],n,!0))),Ye(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(S(156,t.tag))}function Cn(e){e.flags|=4}function rs(e,t,n,a,l){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(l&335544128)===l)if(e.stateNode.complete)e.flags|=8192;else if(by())e.flags|=8192;else throw Pa=eu,Bd}else e.flags&=-16777217}function Om(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Fy(t))if(by())e.flags|=8192;else throw Pa=eu,Bd}function Co(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Ah():536870912,e.lanes|=t,Ql|=t)}function Hi(e,t){if(!V)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function pe(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags&65011712,a|=l.flags&65011712,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags,a|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function ZA(e,t,n){var a=t.pendingProps;switch(xd(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return pe(t),null;case 1:return pe(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),On(ke),ql(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(vl(t)?Cn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Ic())),pe(t),null;case 26:var l=t.type,i=t.memoizedState;return e===null?(Cn(t),i!==null?(pe(t),Om(t,i)):(pe(t),rs(t,l,null,a,n))):i?i!==e.memoizedState?(Cn(t),pe(t),Om(t,i)):(pe(t),t.flags&=-16777217):(e=e.memoizedProps,e!==a&&Cn(t),pe(t),rs(t,l,e,a,n)),null;case 27:if(Qo(t),n=ra.current,l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Cn(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return pe(t),null}e=gn.current,vl(t)?um(t,e):(e=Gy(l,a,n),t.stateNode=e,Cn(t))}return pe(t),null;case 5:if(Qo(t),l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Cn(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return pe(t),null}if(i=gn.current,vl(t))um(t,i);else{var r=mu(ra.current);switch(i){case 1:i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":i=r.createElement("div"),i.innerHTML="<script><\/scr"+"ipt>",i=i.removeChild(i.firstChild);break;case"select":i=typeof a.is=="string"?r.createElement("select",{is:a.is}):r.createElement("select"),a.multiple?i.multiple=!0:a.size&&(i.size=a.size);break;default:i=typeof a.is=="string"?r.createElement(l,{is:a.is}):r.createElement(l)}}i[Ve]=t,i[vt]=a;e:for(r=t.child;r!==null;){if(r.tag===5||r.tag===6)i.appendChild(r.stateNode);else if(r.tag!==4&&r.tag!==27&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break e;for(;r.sibling===null;){if(r.return===null||r.return===t)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}t.stateNode=i;e:switch(Ke(i,l,a),l){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&Cn(t)}}return pe(t),rs(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&Cn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(S(166));if(e=ra.current,vl(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,l=Xe,l!==null)switch(l.tag){case 27:case 5:a=l.memoizedProps}e[Ve]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||Ly(e.nodeValue,n)),e||pa(t,!0)}else e=mu(e).createTextNode(a),e[Ve]=t,t.stateNode=e}return pe(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=vl(t),n!==null){if(e===null){if(!a)throw Error(S(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(557));e[Ve]=t}else Fa(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;pe(t),e=!1}else n=Ic(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Rt(t),t):(Rt(t),null);if((t.flags&128)!==0)throw Error(S(558))}return pe(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(l=vl(t),a!==null&&a.dehydrated!==null){if(e===null){if(!l)throw Error(S(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(S(317));l[Ve]=t}else Fa(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;pe(t),l=!1}else l=Ic(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return t.flags&256?(Rt(t),t):(Rt(t),null)}return Rt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,l=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(l=a.alternate.memoizedState.cachePool.pool),i=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),i!==l&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Co(t,t.updateQueue),pe(t),null);case 4:return ql(),e===null&&tf(t.stateNode.containerInfo),pe(t),null;case 10:return On(t.type),pe(t),null;case 19:if(Fe(xe),a=t.memoizedState,a===null)return pe(t),null;if(l=(t.flags&128)!==0,i=a.rendering,i===null)if(l)Hi(a,!1);else{if(Te!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(i=nu(e),i!==null){for(t.flags|=128,Hi(a,!1),e=i.updateQueue,t.updateQueue=e,Co(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Wh(n,e),n=n.sibling;return ge(xe,xe.current&1|2),V&&Dn(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Dt()>uu&&(t.flags|=128,l=!0,Hi(a,!1),t.lanes=4194304)}else{if(!l)if(e=nu(i),e!==null){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,Co(t,e),Hi(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!V)return pe(t),null}else 2*Dt()-a.renderingStartTime>uu&&n!==536870912&&(t.flags|=128,l=!0,Hi(a,!1),t.lanes=4194304);a.isBackwards?(i.sibling=t.child,t.child=i):(e=a.last,e!==null?e.sibling=i:t.child=i,a.last=i)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Dt(),e.sibling=null,n=xe.current,ge(xe,l?n&1|2:n&1),V&&Dn(t,a.treeForkCount),e):(pe(t),null);case 22:case 23:return Rt(t),Od(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(pe(t),t.subtreeFlags&6&&(t.flags|=8192)):pe(t),n=t.updateQueue,n!==null&&Co(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&Fe(Ga),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),On(ke),pe(t),null;case 25:return null;case 30:return null}throw Error(S(156,t.tag))}function WA(e,t){switch(xd(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return On(ke),ql(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Qo(t),null;case 31:if(t.memoizedState!==null){if(Rt(t),t.alternate===null)throw Error(S(340));Fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Rt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(S(340));Fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Fe(xe),null;case 4:return ql(),null;case 10:return On(t.type),null;case 22:case 23:return Rt(t),Od(),e!==null&&Fe(Ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return On(ke),null;case 25:return null;default:return null}}function Wp(e,t){switch(xd(t),t.tag){case 3:On(ke),ql();break;case 26:case 27:case 5:Qo(t);break;case 4:ql();break;case 31:t.memoizedState!==null&&Rt(t);break;case 13:Rt(t);break;case 19:Fe(xe);break;case 10:On(t.type);break;case 22:case 23:Rt(t),Od(),e!==null&&Fe(Ga);break;case 24:On(ke)}}function Er(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var l=a.next;n=l;do{if((n.tag&e)===e){a=void 0;var i=n.create,r=n.inst;a=i(),r.destroy=a}n=n.next}while(n!==l)}}catch(o){le(t,t.return,o)}}function ya(e,t,n){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&e)===e){var r=a.inst,o=r.destroy;if(o!==void 0){r.destroy=void 0,l=t;var u=n,c=o;try{c()}catch(s){le(l,u,s)}}}a=a.next}while(a!==i)}}catch(s){le(t,t.return,s)}}function Ip(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{rp(t,n)}catch(a){le(e,e.return,a)}}}function Jp(e,t,n){n.props=Xa(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){le(e,t,a)}}function $i(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(l){le(e,t,l)}}function fn(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(l){le(e,t,l)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(l){le(e,t,l)}else n.current=null}function $p(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(l){le(e,e.return,l)}}function os(e,t,n){try{var a=e.stateNode;pw(a,e.type,n,t),a[vt]=t}catch(l){le(e,e.return,l)}}function ey(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Aa(e.type)||e.tag===4}function us(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ey(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Aa(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ws(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=_n));else if(a!==4&&(a===27&&Aa(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Ws(e,t,n),e=e.sibling;e!==null;)Ws(e,t,n),e=e.sibling}function ou(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&Aa(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(ou(e,t,n),e=e.sibling;e!==null;)ou(e,t,n),e=e.sibling}function ty(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);Ke(t,a,n),t[Ve]=e,t[vt]=n}catch(i){le(e,e.return,i)}}var xn=!1,Oe=!1,cs=!1,km=typeof WeakSet=="function"?WeakSet:Set,Pe=null;function IA(e,t){if(e=e.containerInfo,ad=vu,e=Fh(e),Cd(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var l=a.anchorOffset,i=a.focusNode;a=a.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var r=0,o=-1,u=-1,c=0,s=0,f=e,d=null;t:for(;;){for(var m;f!==n||l!==0&&f.nodeType!==3||(o=r+l),f!==i||a!==0&&f.nodeType!==3||(u=r+a),f.nodeType===3&&(r+=f.nodeValue.length),(m=f.firstChild)!==null;)d=f,f=m;for(;;){if(f===e)break t;if(d===n&&++c===l&&(o=r),d===i&&++s===a&&(u=r),(m=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=m}n=o===-1||u===-1?null:{start:o,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ld={focusedElem:e,selectionRange:n},vu=!1,Pe=t;Pe!==null;)if(t=Pe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Pe=e;else for(;Pe!==null;){switch(t=Pe,i=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)l=e[n],l.ref.impl=l.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&i!==null){e=void 0,n=t,l=i.memoizedProps,i=i.memoizedState,a=n.stateNode;try{var v=Xa(n.type,l);e=a.getSnapshotBeforeUpdate(v,i),a.__reactInternalSnapshotBeforeUpdate=e}catch(A){le(n,n.return,A)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)rd(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":rd(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(S(163))}if(e=t.sibling,e!==null){e.return=t.return,Pe=e;break}Pe=t.return}}function ny(e,t,n){var a=n.flags;switch(n.tag){case 0:case 11:case 15:Tn(e,n),a&4&&Er(5,n);break;case 1:if(Tn(e,n),a&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(r){le(n,n.return,r)}else{var l=Xa(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(r){le(n,n.return,r)}}a&64&&Ip(n),a&512&&$i(n,n.return);break;case 3:if(Tn(e,n),a&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{rp(e,t)}catch(r){le(n,n.return,r)}}break;case 27:t===null&&a&4&&ty(n);case 26:case 5:Tn(e,n),t===null&&a&4&&$p(n),a&512&&$i(n,n.return);break;case 12:Tn(e,n);break;case 31:Tn(e,n),a&4&&iy(e,n);break;case 13:Tn(e,n),a&4&&ry(e,n),a&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=rw.bind(null,n),Rw(e,n))));break;case 22:if(a=n.memoizedState!==null||xn,!a){t=t!==null&&t.memoizedState!==null||Oe,l=xn;var i=Oe;xn=a,(Oe=t)&&!i?En(e,n,(n.subtreeFlags&8772)!==0):Tn(e,n),xn=l,Oe=i}break;case 30:break;default:Tn(e,n)}}function ay(e){var t=e.alternate;t!==null&&(e.alternate=null,ay(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&yd(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Ce=null,ht=!1;function Rn(e,t,n){for(n=n.child;n!==null;)ly(e,t,n),n=n.sibling}function ly(e,t,n){if(xt&&typeof xt.onCommitFiberUnmount=="function")try{xt.onCommitFiberUnmount(br,n)}catch{}switch(n.tag){case 26:Oe||fn(n,t),Rn(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Oe||fn(n,t);var a=Ce,l=ht;Aa(n.type)&&(Ce=n.stateNode,ht=!1),Rn(e,t,n),ar(n.stateNode),Ce=a,ht=l;break;case 5:Oe||fn(n,t);case 6:if(a=Ce,l=ht,Ce=null,Rn(e,t,n),Ce=a,ht=l,Ce!==null)if(ht)try{(Ce.nodeType===9?Ce.body:Ce.nodeName==="HTML"?Ce.ownerDocument.body:Ce).removeChild(n.stateNode)}catch(i){le(n,t,i)}else try{Ce.removeChild(n.stateNode)}catch(i){le(n,t,i)}break;case 18:Ce!==null&&(ht?(e=Ce,Zm(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),Il(e)):Zm(Ce,n.stateNode));break;case 4:a=Ce,l=ht,Ce=n.stateNode.containerInfo,ht=!0,Rn(e,t,n),Ce=a,ht=l;break;case 0:case 11:case 14:case 15:ya(2,n,t),Oe||ya(4,n,t),Rn(e,t,n);break;case 1:Oe||(fn(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"&&Jp(n,t,a)),Rn(e,t,n);break;case 21:Rn(e,t,n);break;case 22:Oe=(a=Oe)||n.memoizedState!==null,Rn(e,t,n),Oe=a;break;default:Rn(e,t,n)}}function iy(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Il(e)}catch(n){le(t,t.return,n)}}}function ry(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Il(e)}catch(n){le(t,t.return,n)}}function JA(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new km),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new km),t;default:throw Error(S(435,e.tag))}}function Ro(e,t){var n=JA(e);t.forEach(function(a){if(!n.has(a)){n.add(a);var l=ow.bind(null,e,a);a.then(l,l)}})}function gt(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var l=n[a],i=e,r=t,o=r;e:for(;o!==null;){switch(o.tag){case 27:if(Aa(o.type)){Ce=o.stateNode,ht=!1;break e}break;case 5:Ce=o.stateNode,ht=!1;break e;case 3:case 4:Ce=o.stateNode.containerInfo,ht=!0;break e}o=o.return}if(Ce===null)throw Error(S(160));ly(i,r,l),Ce=null,ht=!1,i=l.alternate,i!==null&&(i.return=null),l.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)oy(t,e),t=t.sibling}var en=null;function oy(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:gt(t,e),mt(e),a&4&&(ya(3,e,e.return),Er(3,e),ya(5,e,e.return));break;case 1:gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),a&64&&xn&&(e=e.updateQueue,e!==null&&(a=e.callbacks,a!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?a:n.concat(a))));break;case 26:var l=en;if(gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),a&4){var i=n!==null?n.memoizedState:null;if(a=e.memoizedState,n===null)if(a===null)if(e.stateNode===null){e:{a=e.type,n=e.memoizedProps,l=l.ownerDocument||l;t:switch(a){case"title":i=l.getElementsByTagName("title")[0],(!i||i[Sr]||i[Ve]||i.namespaceURI==="http://www.w3.org/2000/svg"||i.hasAttribute("itemprop"))&&(i=l.createElement(a),l.head.insertBefore(i,l.querySelector("head > title"))),Ke(i,a,n),i[Ve]=e,qe(i),a=i;break e;case"link":var r=nh("link","href",l).get(a+(n.href||""));if(r){for(var o=0;o<r.length;o++)if(i=r[o],i.getAttribute("href")===(n.href==null||n.href===""?null:n.href)&&i.getAttribute("rel")===(n.rel==null?null:n.rel)&&i.getAttribute("title")===(n.title==null?null:n.title)&&i.getAttribute("crossorigin")===(n.crossOrigin==null?null:n.crossOrigin)){r.splice(o,1);break t}}i=l.createElement(a),Ke(i,a,n),l.head.appendChild(i);break;case"meta":if(r=nh("meta","content",l).get(a+(n.content||""))){for(o=0;o<r.length;o++)if(i=r[o],i.getAttribute("content")===(n.content==null?null:""+n.content)&&i.getAttribute("name")===(n.name==null?null:n.name)&&i.getAttribute("property")===(n.property==null?null:n.property)&&i.getAttribute("http-equiv")===(n.httpEquiv==null?null:n.httpEquiv)&&i.getAttribute("charset")===(n.charSet==null?null:n.charSet)){r.splice(o,1);break t}}i=l.createElement(a),Ke(i,a,n),l.head.appendChild(i);break;default:throw Error(S(468,a))}i[Ve]=e,qe(i),a=i}e.stateNode=a}else ah(l,e.type,e.stateNode);else e.stateNode=th(l,a,e.memoizedProps);else i!==a?(i===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):i.count--,a===null?ah(l,e.type,e.stateNode):th(l,a,e.memoizedProps)):a===null&&e.stateNode!==null&&os(e,e.memoizedProps,n.memoizedProps)}break;case 27:gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),n!==null&&a&4&&os(e,e.memoizedProps,n.memoizedProps);break;case 5:if(gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),e.flags&32){l=e.stateNode;try{jl(l,"")}catch(v){le(e,e.return,v)}}a&4&&e.stateNode!=null&&(l=e.memoizedProps,os(e,l,n!==null?n.memoizedProps:l)),a&1024&&(cs=!0);break;case 6:if(gt(t,e),mt(e),a&4){if(e.stateNode===null)throw Error(S(162));a=e.memoizedProps,n=e.stateNode;try{n.nodeValue=a}catch(v){le(e,e.return,v)}}break;case 3:if(Fo=null,l=en,en=hu(t.containerInfo),gt(t,e),en=l,mt(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{Il(t.containerInfo)}catch(v){le(e,e.return,v)}cs&&(cs=!1,uy(e));break;case 4:a=en,en=hu(e.stateNode.containerInfo),gt(t,e),mt(e),en=a;break;case 12:gt(t,e),mt(e);break;case 31:gt(t,e),mt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Ro(e,a)));break;case 13:gt(t,e),mt(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Bu=Dt()),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Ro(e,a)));break;case 22:l=e.memoizedState!==null;var u=n!==null&&n.memoizedState!==null,c=xn,s=Oe;if(xn=c||l,Oe=s||u,gt(t,e),Oe=s,xn=c,mt(e),a&8192)e:for(t=e.stateNode,t._visibility=l?t._visibility&-2:t._visibility|1,l&&(n===null||u||xn||Oe||Ha(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){u=n=t;try{if(i=u.stateNode,l)r=i.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{o=u.stateNode;var f=u.memoizedProps.style,d=f!=null&&f.hasOwnProperty("display")?f.display:null;o.style.display=d==null||typeof d=="boolean"?"":(""+d).trim()}}catch(v){le(u,u.return,v)}}}else if(t.tag===6){if(n===null){u=t;try{u.stateNode.nodeValue=l?"":u.memoizedProps}catch(v){le(u,u.return,v)}}}else if(t.tag===18){if(n===null){u=t;try{var m=u.stateNode;l?Wm(m,!0):Wm(u.stateNode,!1)}catch(v){le(u,u.return,v)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=e.updateQueue,a!==null&&(n=a.retryQueue,n!==null&&(a.retryQueue=null,Ro(e,n))));break;case 19:gt(t,e),mt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Ro(e,a)));break;case 30:break;case 21:break;default:gt(t,e),mt(e)}}function mt(e){var t=e.flags;if(t&2){try{for(var n,a=e.return;a!==null;){if(ey(a)){n=a;break}a=a.return}if(n==null)throw Error(S(160));switch(n.tag){case 27:var l=n.stateNode,i=us(e);ou(e,i,l);break;case 5:var r=n.stateNode;n.flags&32&&(jl(r,""),n.flags&=-33);var o=us(e);ou(e,o,r);break;case 3:case 4:var u=n.stateNode.containerInfo,c=us(e);Ws(e,c,u);break;default:throw Error(S(161))}}catch(s){le(e,e.return,s)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function uy(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;uy(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function Tn(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)ny(e,t.alternate,t),t=t.sibling}function Ha(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ya(4,t,t.return),Ha(t);break;case 1:fn(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount=="function"&&Jp(t,t.return,n),Ha(t);break;case 27:ar(t.stateNode);case 26:case 5:fn(t,t.return),Ha(t);break;case 22:t.memoizedState===null&&Ha(t);break;case 30:Ha(t);break;default:Ha(t)}e=e.sibling}}function En(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,l=e,i=t,r=i.flags;switch(i.tag){case 0:case 11:case 15:En(l,i,n),Er(4,i);break;case 1:if(En(l,i,n),a=i,l=a.stateNode,typeof l.componentDidMount=="function")try{l.componentDidMount()}catch(c){le(a,a.return,c)}if(a=i,l=a.updateQueue,l!==null){var o=a.stateNode;try{var u=l.shared.hiddenCallbacks;if(u!==null)for(l.shared.hiddenCallbacks=null,l=0;l<u.length;l++)ip(u[l],o)}catch(c){le(a,a.return,c)}}n&&r&64&&Ip(i),$i(i,i.return);break;case 27:ty(i);case 26:case 5:En(l,i,n),n&&a===null&&r&4&&$p(i),$i(i,i.return);break;case 12:En(l,i,n);break;case 31:En(l,i,n),n&&r&4&&iy(l,i);break;case 13:En(l,i,n),n&&r&4&&ry(l,i);break;case 22:i.memoizedState===null&&En(l,i,n),$i(i,i.return);break;case 30:break;default:En(l,i,n)}t=t.sibling}}function Zd(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&Rr(n))}function Wd(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Rr(e))}function $t(e,t,n,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)cy(e,t,n,a),t=t.sibling}function cy(e,t,n,a){var l=t.flags;switch(t.tag){case 0:case 11:case 15:$t(e,t,n,a),l&2048&&Er(9,t);break;case 1:$t(e,t,n,a);break;case 3:$t(e,t,n,a),l&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Rr(e)));break;case 12:if(l&2048){$t(e,t,n,a),e=t.stateNode;try{var i=t.memoizedProps,r=i.id,o=i.onPostCommit;typeof o=="function"&&o(r,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(u){le(t,t.return,u)}}else $t(e,t,n,a);break;case 31:$t(e,t,n,a);break;case 13:$t(e,t,n,a);break;case 23:break;case 22:i=t.stateNode,r=t.alternate,t.memoizedState!==null?i._visibility&2?$t(e,t,n,a):er(e,t):i._visibility&2?$t(e,t,n,a):(i._visibility|=2,Al(e,t,n,a,(t.subtreeFlags&10256)!==0||!1)),l&2048&&Zd(r,t);break;case 24:$t(e,t,n,a),l&2048&&Wd(t.alternate,t);break;default:$t(e,t,n,a)}}function Al(e,t,n,a,l){for(l=l&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var i=e,r=t,o=n,u=a,c=r.flags;switch(r.tag){case 0:case 11:case 15:Al(i,r,o,u,l),Er(8,r);break;case 23:break;case 22:var s=r.stateNode;r.memoizedState!==null?s._visibility&2?Al(i,r,o,u,l):er(i,r):(s._visibility|=2,Al(i,r,o,u,l)),l&&c&2048&&Zd(r.alternate,r);break;case 24:Al(i,r,o,u,l),l&&c&2048&&Wd(r.alternate,r);break;default:Al(i,r,o,u,l)}t=t.sibling}}function er(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,a=t,l=a.flags;switch(a.tag){case 22:er(n,a),l&2048&&Zd(a.alternate,a);break;case 24:er(n,a),l&2048&&Wd(a.alternate,a);break;default:er(n,a)}t=t.sibling}}var Yi=8192;function bl(e,t,n){if(e.subtreeFlags&Yi)for(e=e.child;e!==null;)sy(e,t,n),e=e.sibling}function sy(e,t,n){switch(e.tag){case 26:bl(e,t,n),e.flags&Yi&&e.memoizedState!==null&&Hw(n,en,e.memoizedState,e.memoizedProps);break;case 5:bl(e,t,n);break;case 3:case 4:var a=en;en=hu(e.stateNode.containerInfo),bl(e,t,n),en=a;break;case 22:e.memoizedState===null&&(a=e.alternate,a!==null&&a.memoizedState!==null?(a=Yi,Yi=16777216,bl(e,t,n),Yi=a):bl(e,t,n));break;default:bl(e,t,n)}}function dy(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function zi(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,gy(a,e)}dy(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)fy(e),e=e.sibling}function fy(e){switch(e.tag){case 0:case 11:case 15:zi(e),e.flags&2048&&ya(9,e,e.return);break;case 3:zi(e);break;case 12:zi(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Po(e)):zi(e);break;default:zi(e)}}function Po(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,gy(a,e)}dy(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ya(8,t,t.return),Po(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Po(t));break;default:Po(t)}e=e.sibling}}function gy(e,t){for(;Pe!==null;){var n=Pe;switch(n.tag){case 0:case 11:case 15:ya(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var a=n.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:Rr(n.memoizedState.cache)}if(a=n.child,a!==null)a.return=n,Pe=a;else e:for(n=e;Pe!==null;){a=Pe;var l=a.sibling,i=a.return;if(ay(a),a===n){Pe=null;break e}if(l!==null){l.return=i,Pe=l;break e}Pe=i}}}var $A={getCacheForType:function(e){var t=Qe(ke),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Qe(ke).controller.signal}},ew=typeof WeakMap=="function"?WeakMap:Map,J=0,ue=null,F=null,Y=0,ae=0,Ct=null,aa=!1,ni=!1,Id=!1,Gn=0,Te=0,va=0,qa=0,Jd=0,Et=0,Ql=0,tr=null,pt=null,Is=!1,Bu=0,my=0,uu=1/0,cu=null,sa=null,Ue=0,da=null,Kl=null,kn=0,Js=0,$s=null,hy=null,nr=0,ed=null;function _t(){return(J&2)!==0&&Y!==0?Y&-Y:L.T!==null?ef():Rh()}function py(){if(Et===0)if((Y&536870912)===0||V){var e=mo;mo<<=1,(mo&3932160)===0&&(mo=262144),Et=e}else Et=536870912;return e=Nt.current,e!==null&&(e.flags|=32),Et}function yt(e,t,n){(e===ue&&(ae===2||ae===9)||e.cancelPendingCommit!==null)&&(Zl(e,0),la(e,Y,Et,!1)),wr(e,n),((J&2)===0||e!==ue)&&(e===ue&&((J&2)===0&&(qa|=n),Te===4&&la(e,Y,Et,!1)),hn(e))}function yy(e,t,n){if((J&6)!==0)throw Error(S(327));var a=!n&&(t&127)===0&&(t&e.expiredLanes)===0||Ar(e,t),l=a?aw(e,t):ss(e,t,!0),i=a;do{if(l===0){ni&&!a&&la(e,t,0,!1);break}else{if(n=e.current.alternate,i&&!tw(n)){l=ss(e,t,!1),i=!1;continue}if(l===2){if(i=t,e.errorRecoveryDisabledLanes&i)var r=0;else r=e.pendingLanes&-536870913,r=r!==0?r:r&536870912?536870912:0;if(r!==0){t=r;e:{var o=e;l=tr;var u=o.current.memoizedState.isDehydrated;if(u&&(Zl(o,r).flags|=256),r=ss(o,r,!1),r!==2){if(Id&&!u){o.errorRecoveryDisabledLanes|=i,qa|=i,l=4;break e}i=pt,pt=l,i!==null&&(pt===null?pt=i:pt.push.apply(pt,i))}l=r}if(i=!1,l!==2)continue}}if(l===1){Zl(e,0),la(e,t,0,!0);break}e:{switch(a=e,i=l,i){case 0:case 1:throw Error(S(345));case 4:if((t&4194048)!==t)break;case 6:la(a,t,Et,!aa);break e;case 2:pt=null;break;case 3:case 5:break;default:throw Error(S(329))}if((t&62914560)===t&&(l=Bu+300-Dt(),10<l)){if(la(a,t,Et,!aa),Au(a,0,!0)!==0)break e;kn=t,a.timeoutHandle=zy(Lm.bind(null,a,n,pt,cu,Is,t,Et,qa,Ql,aa,i,"Throttled",-0,0),l);break e}Lm(a,n,pt,cu,Is,t,Et,qa,Ql,aa,i,null,-0,0)}}break}while(!0);hn(e)}function Lm(e,t,n,a,l,i,r,o,u,c,s,f,d,m){if(e.timeoutHandle=-1,f=t.subtreeFlags,f&8192||(f&16785408)===16785408){f={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:_n},sy(t,i,f);var v=(i&62914560)===i?Bu-Dt():(i&4194048)===i?my-Dt():0;if(v=zw(f,v),v!==null){kn=i,e.cancelPendingCommit=v(zm.bind(null,e,t,i,n,a,l,r,o,u,s,f,null,d,m)),la(e,i,r,!c);return}}zm(e,t,i,n,a,l,r,o,u)}function tw(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var a=0;a<n.length;a++){var l=n[a],i=l.getSnapshot;l=l.value;try{if(!Bt(i(),l))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function la(e,t,n,a){t&=~Jd,t&=~qa,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var l=t;0<l;){var i=31-Mt(l),r=1<<i;a[i]=-1,l&=~r}n!==0&&wh(e,n,t)}function Nu(){return(J&6)===0?(Dr(0,!1),!1):!0}function $d(){if(F!==null){if(ae===0)var e=F.return;else e=F,Bn=Ia=null,Ud(e),Ul=null,sr=0,e=F;for(;e!==null;)Wp(e.alternate,e),e=e.return;F=null}}function Zl(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,bw(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),kn=0,$d(),ue=e,F=n=Nn(e.current,null),Y=t,ae=0,Ct=null,aa=!1,ni=Ar(e,t),Id=!1,Ql=Et=Jd=qa=va=Te=0,pt=tr=null,Is=!1,(t&8)!==0&&(t|=t&32);var a=e.entangledLanes;if(a!==0)for(e=e.entanglements,a&=t;0<a;){var l=31-Mt(a),i=1<<l;t|=e[l],a&=~i}return Gn=t,Ru(),n}function vy(e,t){G=null,L.H=fr,t===ti||t===Eu?(t=gm(),ae=3):t===Bd?(t=gm(),ae=4):ae=t===Qd?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,Ct=t,F===null&&(Te=1,iu(e,Yt(t,e.current)))}function by(){var e=Nt.current;return e===null?!0:(Y&4194048)===Y?Xt===null:(Y&62914560)===Y||(Y&536870912)!==0?e===Xt:!1}function Ay(){var e=L.H;return L.H=fr,e===null?fr:e}function wy(){var e=L.A;return L.A=$A,e}function su(){Te=4,aa||(Y&4194048)!==Y&&Nt.current!==null||(ni=!0),(va&134217727)===0&&(qa&134217727)===0||ue===null||la(ue,Y,Et,!1)}function ss(e,t,n){var a=J;J|=2;var l=Ay(),i=wy();(ue!==e||Y!==t)&&(cu=null,Zl(e,t)),t=!1;var r=Te;e:do try{if(ae!==0&&F!==null){var o=F,u=Ct;switch(ae){case 8:$d(),r=6;break e;case 3:case 2:case 9:case 6:Nt.current===null&&(t=!0);var c=ae;if(ae=0,Ct=null,Ol(e,o,u,c),n&&ni){r=0;break e}break;default:c=ae,ae=0,Ct=null,Ol(e,o,u,c)}}nw(),r=Te;break}catch(s){vy(e,s)}while(!0);return t&&e.shellSuspendCounter++,Bn=Ia=null,J=a,L.H=l,L.A=i,F===null&&(ue=null,Y=0,Ru()),r}function nw(){for(;F!==null;)Sy(F)}function aw(e,t){var n=J;J|=2;var a=Ay(),l=wy();ue!==e||Y!==t?(cu=null,uu=Dt()+500,Zl(e,t)):ni=Ar(e,t);e:do try{if(ae!==0&&F!==null){t=F;var i=Ct;t:switch(ae){case 1:ae=0,Ct=null,Ol(e,t,i,1);break;case 2:case 9:if(fm(i)){ae=0,Ct=null,Hm(t);break}t=function(){ae!==2&&ae!==9||ue!==e||(ae=7),hn(e)},i.then(t,t);break e;case 3:ae=7;break e;case 4:ae=5;break e;case 7:fm(i)?(ae=0,Ct=null,Hm(t)):(ae=0,Ct=null,Ol(e,t,i,7));break;case 5:var r=null;switch(F.tag){case 26:r=F.memoizedState;case 5:case 27:var o=F;if(r?Fy(r):o.stateNode.complete){ae=0,Ct=null;var u=o.sibling;if(u!==null)F=u;else{var c=o.return;c!==null?(F=c,Ou(c)):F=null}break t}}ae=0,Ct=null,Ol(e,t,i,5);break;case 6:ae=0,Ct=null,Ol(e,t,i,6);break;case 8:$d(),Te=6;break e;default:throw Error(S(462))}}lw();break}catch(s){vy(e,s)}while(!0);return Bn=Ia=null,L.H=a,L.A=l,J=n,F!==null?0:(ue=null,Y=0,Ru(),Te)}function lw(){for(;F!==null&&!Db();)Sy(F)}function Sy(e){var t=Zp(e.alternate,e,Gn);e.memoizedProps=e.pendingProps,t===null?Ou(e):F=t}function Hm(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Mm(n,t,t.pendingProps,t.type,void 0,Y);break;case 11:t=Mm(n,t,t.pendingProps,t.type.render,t.ref,Y);break;case 5:Ud(t);default:Wp(n,t),t=F=Wh(t,Gn),t=Zp(n,t,Gn)}e.memoizedProps=e.pendingProps,t===null?Ou(e):F=t}function Ol(e,t,n,a){Bn=Ia=null,Ud(t),Ul=null,sr=0;var l=t.return;try{if(XA(e,l,t,n,Y)){Te=1,iu(e,Yt(n,e.current)),F=null;return}}catch(i){if(l!==null)throw F=l,i;Te=1,iu(e,Yt(n,e.current)),F=null;return}t.flags&32768?(V||a===1?e=!0:ni||(Y&536870912)!==0?e=!1:(aa=e=!0,(a===2||a===9||a===3||a===6)&&(a=Nt.current,a!==null&&a.tag===13&&(a.flags|=16384))),Cy(t,e)):Ou(t)}function Ou(e){var t=e;do{if((t.flags&32768)!==0){Cy(t,aa);return}e=t.return;var n=ZA(t.alternate,t,Gn);if(n!==null){F=n;return}if(t=t.sibling,t!==null){F=t;return}F=t=e}while(t!==null);Te===0&&(Te=5)}function Cy(e,t){do{var n=WA(e.alternate,e);if(n!==null){n.flags&=32767,F=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){F=e;return}F=e=n}while(e!==null);Te=6,F=null}function zm(e,t,n,a,l,i,r,o,u){e.cancelPendingCommit=null;do ku();while(Ue!==0);if((J&6)!==0)throw Error(S(327));if(t!==null){if(t===e.current)throw Error(S(177));if(i=t.lanes|t.childLanes,i|=Rd,zb(e,n,i,r,o,u),e===ue&&(F=ue=null,Y=0),Kl=t,da=e,kn=n,Js=i,$s=l,hy=a,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,uw(Ko,function(){return xy(),null})):(e.callbackNode=null,e.callbackPriority=0),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=L.T,L.T=null,l=$.p,$.p=2,r=J,J|=4;try{IA(e,t,n)}finally{J=r,$.p=l,L.T=a}}Ue=1,Ry(),Ty(),Ey()}}function Ry(){if(Ue===1){Ue=0;var e=da,t=Kl,n=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||n){n=L.T,L.T=null;var a=$.p;$.p=2;var l=J;J|=4;try{oy(t,e);var i=ld,r=Fh(e.containerInfo),o=i.focusedElem,u=i.selectionRange;if(r!==o&&o&&o.ownerDocument&&qh(o.ownerDocument.documentElement,o)){if(u!==null&&Cd(o)){var c=u.start,s=u.end;if(s===void 0&&(s=c),"selectionStart"in o)o.selectionStart=c,o.selectionEnd=Math.min(s,o.value.length);else{var f=o.ownerDocument||document,d=f&&f.defaultView||window;if(d.getSelection){var m=d.getSelection(),v=o.textContent.length,A=Math.min(u.start,v),b=u.end===void 0?A:Math.min(u.end,v);!m.extend&&A>b&&(r=b,b=A,A=r);var h=im(o,A),g=im(o,b);if(h&&g&&(m.rangeCount!==1||m.anchorNode!==h.node||m.anchorOffset!==h.offset||m.focusNode!==g.node||m.focusOffset!==g.offset)){var p=f.createRange();p.setStart(h.node,h.offset),m.removeAllRanges(),A>b?(m.addRange(p),m.extend(g.node,g.offset)):(p.setEnd(g.node,g.offset),m.addRange(p))}}}}for(f=[],m=o;m=m.parentNode;)m.nodeType===1&&f.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o<f.length;o++){var y=f[o];y.element.scrollLeft=y.left,y.element.scrollTop=y.top}}vu=!!ad,ld=ad=null}finally{J=l,$.p=a,L.T=n}}e.current=t,Ue=2}}function Ty(){if(Ue===2){Ue=0;var e=da,t=Kl,n=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||n){n=L.T,L.T=null;var a=$.p;$.p=2;var l=J;J|=4;try{ny(e,t.alternate,t)}finally{J=l,$.p=a,L.T=n}}Ue=3}}function Ey(){if(Ue===4||Ue===3){Ue=0,xb();var e=da,t=Kl,n=kn,a=hy;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?Ue=5:(Ue=0,Kl=da=null,Dy(e,e.pendingLanes));var l=e.pendingLanes;if(l===0&&(sa=null),pd(n),t=t.stateNode,xt&&typeof xt.onCommitFiberRoot=="function")try{xt.onCommitFiberRoot(br,t,void 0,(t.current.flags&128)===128)}catch{}if(a!==null){t=L.T,l=$.p,$.p=2,L.T=null;try{for(var i=e.onRecoverableError,r=0;r<a.length;r++){var o=a[r];i(o.value,{componentStack:o.stack})}}finally{L.T=t,$.p=l}}(kn&3)!==0&&ku(),hn(e),l=e.pendingLanes,(n&261930)!==0&&(l&42)!==0?e===ed?nr++:(nr=0,ed=e):nr=0,Dr(0,!1)}}function Dy(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Rr(t)))}function ku(){return Ry(),Ty(),Ey(),xy()}function xy(){if(Ue!==5)return!1;var e=da,t=Js;Js=0;var n=pd(kn),a=L.T,l=$.p;try{$.p=32>n?32:n,L.T=null,n=$s,$s=null;var i=da,r=kn;if(Ue=0,Kl=da=null,kn=0,(J&6)!==0)throw Error(S(331));var o=J;if(J|=4,fy(i.current),cy(i,i.current,r,n),J=o,Dr(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(br,i)}catch{}return!0}finally{$.p=l,L.T=a,Dy(e,t)}}function Um(e,t,n){t=Yt(n,t),t=Qs(e.stateNode,t,2),e=ca(e,t,2),e!==null&&(wr(e,2),hn(e))}function le(e,t,n){if(e.tag===3)Um(e,e,n);else for(;t!==null;){if(t.tag===3){Um(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(sa===null||!sa.has(a))){e=Yt(n,e),n=jp(2),a=ca(t,n,2),a!==null&&(Yp(n,a,t,e),wr(a,2),hn(a));break}}t=t.return}}function ds(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new ew;var l=new Set;a.set(t,l)}else l=a.get(t),l===void 0&&(l=new Set,a.set(t,l));l.has(n)||(Id=!0,l.add(n),e=iw.bind(null,e,t,n),t.then(e,e))}function iw(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ue===e&&(Y&n)===n&&(Te===4||Te===3&&(Y&62914560)===Y&&300>Dt()-Bu?(J&2)===0&&Zl(e,0):Jd|=n,Ql===Y&&(Ql=0)),hn(e)}function My(e,t){t===0&&(t=Ah()),e=Wa(e,t),e!==null&&(wr(e,t),hn(e))}function rw(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),My(e,n)}function ow(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(S(314))}a!==null&&a.delete(t),My(e,n)}function uw(e,t){return md(e,t)}var du=null,wl=null,td=!1,fu=!1,fs=!1,ia=0;function hn(e){e!==wl&&e.next===null&&(wl===null?du=wl=e:wl=wl.next=e),fu=!0,td||(td=!0,sw())}function Dr(e,t){if(!fs&&fu){fs=!0;do for(var n=!1,a=du;a!==null;){if(!t)if(e!==0){var l=a.pendingLanes;if(l===0)var i=0;else{var r=a.suspendedLanes,o=a.pingedLanes;i=(1<<31-Mt(42|e)+1)-1,i&=l&~(r&~o),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(n=!0,Gm(a,i))}else i=Y,i=Au(a,a===ue?i:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(i&3)===0||Ar(a,i)||(n=!0,Gm(a,i));a=a.next}while(n);fs=!1}}function cw(){_y()}function _y(){fu=td=!1;var e=0;ia!==0&&vw()&&(e=ia);for(var t=Dt(),n=null,a=du;a!==null;){var l=a.next,i=By(a,t);i===0?(a.next=null,n===null?du=l:n.next=l,l===null&&(wl=n)):(n=a,(e!==0||(i&3)!==0)&&(fu=!0)),a=l}Ue!==0&&Ue!==5||Dr(e,!1),ia!==0&&(ia=0)}function By(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,l=e.expirationTimes,i=e.pendingLanes&-62914561;0<i;){var r=31-Mt(i),o=1<<r,u=l[r];u===-1?((o&n)===0||(o&a)!==0)&&(l[r]=Hb(o,t)):u<=t&&(e.expiredLanes|=o),i&=~o}if(t=ue,n=Y,n=Au(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a=e.callbackNode,n===0||e===t&&(ae===2||ae===9)||e.cancelPendingCommit!==null)return a!==null&&a!==null&&qc(a),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||Ar(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(a!==null&&qc(a),pd(n)){case 2:case 8:n=vh;break;case 32:n=Ko;break;case 268435456:n=bh;break;default:n=Ko}return a=Ny.bind(null,e),n=md(n,a),e.callbackPriority=t,e.callbackNode=n,t}return a!==null&&a!==null&&qc(a),e.callbackPriority=2,e.callbackNode=null,2}function Ny(e,t){if(Ue!==0&&Ue!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(ku()&&e.callbackNode!==n)return null;var a=Y;return a=Au(e,e===ue?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a===0?null:(yy(e,a,t),By(e,Dt()),e.callbackNode!=null&&e.callbackNode===n?Ny.bind(null,e):null)}function Gm(e,t){if(ku())return null;yy(e,t,!0)}function sw(){Aw(function(){(J&6)!==0?md(yh,cw):_y()})}function ef(){if(ia===0){var e=Yl;e===0&&(e=go,go<<=1,(go&261888)===0&&(go=256)),ia=e}return ia}function Pm(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Bo(""+e)}function qm(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function dw(e,t,n,a,l){if(t==="submit"&&n&&n.stateNode===l){var i=Pm((l[vt]||null).action),r=a.submitter;r&&(t=(t=r[vt]||null)?Pm(t.formAction):r.getAttribute("formAction"),t!==null&&(i=t,r=null));var o=new wu("action","action",null,a,l);e.push({event:o,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(ia!==0){var u=r?qm(l,r):new FormData(l);Vs(n,{pending:!0,data:u,method:l.method,action:i},null,u)}}else typeof i=="function"&&(o.preventDefault(),u=r?qm(l,r):new FormData(l),Vs(n,{pending:!0,data:u,method:l.method,action:i},i,u))},currentTarget:l}]})}}for(To=0;To<Os.length;To++)Eo=Os[To],Fm=Eo.toLowerCase(),jm=Eo[0].toUpperCase()+Eo.slice(1),tn(Fm,"on"+jm);var Eo,Fm,jm,To;tn(Yh,"onAnimationEnd");tn(Vh,"onAnimationIteration");tn(Xh,"onAnimationStart");tn("dblclick","onDoubleClick");tn("focusin","onFocus");tn("focusout","onBlur");tn(MA,"onTransitionRun");tn(_A,"onTransitionStart");tn(BA,"onTransitionCancel");tn(Qh,"onTransitionEnd");Fl("onMouseEnter",["mouseout","mouseover"]);Fl("onMouseLeave",["mouseout","mouseover"]);Fl("onPointerEnter",["pointerout","pointerover"]);Fl("onPointerLeave",["pointerout","pointerover"]);Qa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Qa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Qa("onBeforeInput",["compositionend","keypress","textInput","paste"]);Qa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Qa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Qa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var gr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),fw=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(gr));function Oy(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],l=a.event;a=a.listeners;e:{var i=void 0;if(t)for(var r=a.length-1;0<=r;r--){var o=a[r],u=o.instance,c=o.currentTarget;if(o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Wo(s)}l.currentTarget=null,i=u}else for(r=0;r<a.length;r++){if(o=a[r],u=o.instance,c=o.currentTarget,o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Wo(s)}l.currentTarget=null,i=u}}}}function q(e,t){var n=t[Ts];n===void 0&&(n=t[Ts]=new Set);var a=e+"__bubble";n.has(a)||(ky(t,e,2,!1),n.add(a))}function gs(e,t,n){var a=0;t&&(a|=4),ky(n,e,a,t)}var Do="_reactListening"+Math.random().toString(36).slice(2);function tf(e){if(!e[Do]){e[Do]=!0,Th.forEach(function(n){n!=="selectionchange"&&(fw.has(n)||gs(n,!1,e),gs(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Do]||(t[Do]=!0,gs("selectionchange",!1,t))}}function ky(e,t,n,a){switch(Qy(t)){case 2:var l=Pw;break;case 8:l=qw;break;default:l=rf}n=l.bind(null,t,n,e),l=void 0,!_s||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(l=!0),a?l!==void 0?e.addEventListener(t,n,{capture:!0,passive:l}):e.addEventListener(t,n,!0):l!==void 0?e.addEventListener(t,n,{passive:l}):e.addEventListener(t,n,!1)}function ms(e,t,n,a,l){var i=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var r=a.tag;if(r===3||r===4){var o=a.stateNode.containerInfo;if(o===l)break;if(r===4)for(r=a.return;r!==null;){var u=r.tag;if((u===3||u===4)&&r.stateNode.containerInfo===l)return;r=r.return}for(;o!==null;){if(r=Rl(o),r===null)return;if(u=r.tag,u===5||u===6||u===26||u===27){a=i=r;continue e}o=o.parentNode}}a=a.return}Oh(function(){var c=i,s=bd(n),f=[];e:{var d=Kh.get(e);if(d!==void 0){var m=wu,v=e;switch(e){case"keypress":if(Oo(n)===0)break e;case"keydown":case"keyup":m=oA;break;case"focusin":v="focus",m=Xc;break;case"focusout":v="blur",m=Xc;break;case"beforeblur":case"afterblur":m=Xc;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=Wg;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=Zb;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=sA;break;case Yh:case Vh:case Xh:m=Jb;break;case Qh:m=fA;break;case"scroll":case"scrollend":m=Qb;break;case"wheel":m=mA;break;case"copy":case"cut":case"paste":m=eA;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=Jg;break;case"toggle":case"beforetoggle":m=pA}var A=(t&4)!==0,b=!A&&(e==="scroll"||e==="scrollend"),h=A?d!==null?d+"Capture":null:d;A=[];for(var g=c,p;g!==null;){var y=g;if(p=y.stateNode,y=y.tag,y!==5&&y!==26&&y!==27||p===null||h===null||(y=ir(g,h),y!=null&&A.push(mr(g,y,p))),b)break;g=g.return}0<A.length&&(d=new m(d,v,null,n,s),f.push({event:d,listeners:A}))}}if((t&7)===0){e:{if(d=e==="mouseover"||e==="pointerover",m=e==="mouseout"||e==="pointerout",d&&n!==Ms&&(v=n.relatedTarget||n.fromElement)&&(Rl(v)||v[Jl]))break e;if((m||d)&&(d=s.window===s?s:(d=s.ownerDocument)?d.defaultView||d.parentWindow:window,m?(v=n.relatedTarget||n.toElement,m=c,v=v?Rl(v):null,v!==null&&(b=vr(v),A=v.tag,v!==b||A!==5&&A!==27&&A!==6)&&(v=null)):(m=null,v=c),m!==v)){if(A=Wg,y="onMouseLeave",h="onMouseEnter",g="mouse",(e==="pointerout"||e==="pointerover")&&(A=Jg,y="onPointerLeave",h="onPointerEnter",g="pointer"),b=m==null?d:Fi(m),p=v==null?d:Fi(v),d=new A(y,g+"leave",m,n,s),d.target=b,d.relatedTarget=p,y=null,Rl(s)===c&&(A=new A(h,g+"enter",v,n,s),A.target=p,A.relatedTarget=b,y=A),b=y,m&&v)t:{for(A=gw,h=m,g=v,p=0,y=h;y;y=A(y))p++;y=0;for(var C=g;C;C=A(C))y++;for(;0<p-y;)h=A(h),p--;for(;0<y-p;)g=A(g),y--;for(;p--;){if(h===g||g!==null&&h===g.alternate){A=h;break t}h=A(h),g=A(g)}A=null}else A=null;m!==null&&Ym(f,d,m,A,!1),v!==null&&b!==null&&Ym(f,b,v,A,!0)}}e:{if(d=c?Fi(c):window,m=d.nodeName&&d.nodeName.toLowerCase(),m==="select"||m==="input"&&d.type==="file")var R=nm;else if(tm(d))if(Gh)R=EA;else{R=RA;var T=CA}else m=d.nodeName,!m||m.toLowerCase()!=="input"||d.type!=="checkbox"&&d.type!=="radio"?c&&vd(c.elementType)&&(R=nm):R=TA;if(R&&(R=R(e,c))){Uh(f,R,n,s);break e}T&&T(e,d,c),e==="focusout"&&c&&d.type==="number"&&c.memoizedProps.value!=null&&xs(d,"number",d.value)}switch(T=c?Fi(c):window,e){case"focusin":(tm(T)||T.contentEditable==="true")&&(Dl=T,Bs=c,Qi=null);break;case"focusout":Qi=Bs=Dl=null;break;case"mousedown":Ns=!0;break;case"contextmenu":case"mouseup":case"dragend":Ns=!1,rm(f,n,s);break;case"selectionchange":if(xA)break;case"keydown":case"keyup":rm(f,n,s)}var M;if(Sd)e:{switch(e){case"compositionstart":var w="onCompositionStart";break e;case"compositionend":w="onCompositionEnd";break e;case"compositionupdate":w="onCompositionUpdate";break e}w=void 0}else El?Hh(e,n)&&(w="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(w="onCompositionStart");w&&(Lh&&n.locale!=="ko"&&(El||w!=="onCompositionStart"?w==="onCompositionEnd"&&El&&(M=kh()):(na=s,Ad="value"in na?na.value:na.textContent,El=!0)),T=gu(c,w),0<T.length&&(w=new Ig(w,e,null,n,s),f.push({event:w,listeners:T}),M?w.data=M:(M=zh(n),M!==null&&(w.data=M)))),(M=vA?bA(e,n):AA(e,n))&&(w=gu(c,"onBeforeInput"),0<w.length&&(T=new Ig("onBeforeInput","beforeinput",null,n,s),f.push({event:T,listeners:w}),T.data=M)),dw(f,e,c,n,s)}Oy(f,t)})}function mr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function gu(e,t){for(var n=t+"Capture",a=[];e!==null;){var l=e,i=l.stateNode;if(l=l.tag,l!==5&&l!==26&&l!==27||i===null||(l=ir(e,n),l!=null&&a.unshift(mr(e,l,i)),l=ir(e,t),l!=null&&a.push(mr(e,l,i))),e.tag===3)return a;e=e.return}return[]}function gw(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Ym(e,t,n,a,l){for(var i=t._reactName,r=[];n!==null&&n!==a;){var o=n,u=o.alternate,c=o.stateNode;if(o=o.tag,u!==null&&u===a)break;o!==5&&o!==26&&o!==27||c===null||(u=c,l?(c=ir(n,i),c!=null&&r.unshift(mr(n,c,u))):l||(c=ir(n,i),c!=null&&r.push(mr(n,c,u)))),n=n.return}r.length!==0&&e.push({event:t,listeners:r})}var mw=/\r\n?/g,hw=/\u0000|\uFFFD/g;function Vm(e){return(typeof e=="string"?e:""+e).replace(mw,``).replace(hw,"")}function Ly(e,t){return t=Vm(t),Vm(e)===t}function ie(e,t,n,a,l,i){switch(n){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||jl(e,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&jl(e,""+a);break;case"className":po(e,"class",a);break;case"tabIndex":po(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":po(e,n,a);break;case"style":Nh(e,a,i);break;case"data":if(t!=="object"){po(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||n!=="href")){e.removeAttribute(n);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Bo(""+a),e.setAttribute(n,a);break;case"action":case"formAction":if(typeof a=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof i=="function"&&(n==="formAction"?(t!=="input"&&ie(e,t,"name",l.name,l,null),ie(e,t,"formEncType",l.formEncType,l,null),ie(e,t,"formMethod",l.formMethod,l,null),ie(e,t,"formTarget",l.formTarget,l,null)):(ie(e,t,"encType",l.encType,l,null),ie(e,t,"method",l.method,l,null),ie(e,t,"target",l.target,l,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Bo(""+a),e.setAttribute(n,a);break;case"onClick":a!=null&&(e.onclick=_n);break;case"onScroll":a!=null&&q("scroll",e);break;case"onScrollEnd":a!=null&&q("scrollend",e);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(S(60));e.innerHTML=n}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}n=Bo(""+a),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""+a):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":a===!0?e.setAttribute(n,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,a):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?e.setAttribute(n,a):e.removeAttribute(n);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(n):e.setAttribute(n,a);break;case"popover":q("beforetoggle",e),q("toggle",e),_o(e,"popover",a);break;case"xlinkActuate":Sn(e,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":Sn(e,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":Sn(e,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":Sn(e,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":Sn(e,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":Sn(e,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":Sn(e,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":Sn(e,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":Sn(e,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":_o(e,"is",a);break;case"innerText":case"textContent":break;default:(!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(n=Vb.get(n)||n,_o(e,n,a))}}function nd(e,t,n,a,l,i){switch(n){case"style":Nh(e,a,i);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(S(60));e.innerHTML=n}}break;case"children":typeof a=="string"?jl(e,a):(typeof a=="number"||typeof a=="bigint")&&jl(e,""+a);break;case"onScroll":a!=null&&q("scroll",e);break;case"onScrollEnd":a!=null&&q("scrollend",e);break;case"onClick":a!=null&&(e.onclick=_n);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Eh.hasOwnProperty(n))e:{if(n[0]==="o"&&n[1]==="n"&&(l=n.endsWith("Capture"),t=n.slice(2,l?n.length-7:void 0),i=e[vt]||null,i=i!=null?i[n]:null,typeof i=="function"&&e.removeEventListener(t,i,l),typeof a=="function")){typeof i!="function"&&i!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,a,l);break e}n in e?e[n]=a:a===!0?e.setAttribute(n,""):_o(e,n,a)}}}function Ke(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":q("error",e),q("load",e);var a=!1,l=!1,i;for(i in n)if(n.hasOwnProperty(i)){var r=n[i];if(r!=null)switch(i){case"src":a=!0;break;case"srcSet":l=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:ie(e,t,i,r,n,null)}}l&&ie(e,t,"srcSet",n.srcSet,n,null),a&&ie(e,t,"src",n.src,n,null);return;case"input":q("invalid",e);var o=i=r=l=null,u=null,c=null;for(a in n)if(n.hasOwnProperty(a)){var s=n[a];if(s!=null)switch(a){case"name":l=s;break;case"type":r=s;break;case"checked":u=s;break;case"defaultChecked":c=s;break;case"value":i=s;break;case"defaultValue":o=s;break;case"children":case"dangerouslySetInnerHTML":if(s!=null)throw Error(S(137,t));break;default:ie(e,t,a,s,n,null)}}Mh(e,i,o,u,c,r,l,!1);return;case"select":q("invalid",e),a=r=i=null;for(l in n)if(n.hasOwnProperty(l)&&(o=n[l],o!=null))switch(l){case"value":i=o;break;case"defaultValue":r=o;break;case"multiple":a=o;default:ie(e,t,l,o,n,null)}t=i,n=r,e.multiple=!!a,t!=null?Ll(e,!!a,t,!1):n!=null&&Ll(e,!!a,n,!0);return;case"textarea":q("invalid",e),i=l=a=null;for(r in n)if(n.hasOwnProperty(r)&&(o=n[r],o!=null))switch(r){case"value":a=o;break;case"defaultValue":l=o;break;case"children":i=o;break;case"dangerouslySetInnerHTML":if(o!=null)throw Error(S(91));break;default:ie(e,t,r,o,n,null)}Bh(e,a,l,i);return;case"option":for(u in n)if(n.hasOwnProperty(u)&&(a=n[u],a!=null))switch(u){case"selected":e.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:ie(e,t,u,a,n,null)}return;case"dialog":q("beforetoggle",e),q("toggle",e),q("cancel",e),q("close",e);break;case"iframe":case"object":q("load",e);break;case"video":case"audio":for(a=0;a<gr.length;a++)q(gr[a],e);break;case"image":q("error",e),q("load",e);break;case"details":q("toggle",e);break;case"embed":case"source":case"link":q("error",e),q("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(c in n)if(n.hasOwnProperty(c)&&(a=n[c],a!=null))switch(c){case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:ie(e,t,c,a,n,null)}return;default:if(vd(t)){for(s in n)n.hasOwnProperty(s)&&(a=n[s],a!==void 0&&nd(e,t,s,a,n,void 0));return}}for(o in n)n.hasOwnProperty(o)&&(a=n[o],a!=null&&ie(e,t,o,a,n,null))}function pw(e,t,n,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,i=null,r=null,o=null,u=null,c=null,s=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case"checked":break;case"value":break;case"defaultValue":u=f;default:a.hasOwnProperty(m)||ie(e,t,m,null,a,f)}}for(var d in a){var m=a[d];if(f=n[d],a.hasOwnProperty(d)&&(m!=null||f!=null))switch(d){case"type":i=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":s=m;break;case"value":r=m;break;case"defaultValue":o=m;break;case"children":case"dangerouslySetInnerHTML":if(m!=null)throw Error(S(137,t));break;default:m!==f&&ie(e,t,d,m,a,f)}}Ds(e,r,o,u,c,s,i,l);return;case"select":m=r=o=d=null;for(i in n)if(u=n[i],n.hasOwnProperty(i)&&u!=null)switch(i){case"value":break;case"multiple":m=u;default:a.hasOwnProperty(i)||ie(e,t,i,null,a,u)}for(l in a)if(i=a[l],u=n[l],a.hasOwnProperty(l)&&(i!=null||u!=null))switch(l){case"value":d=i;break;case"defaultValue":o=i;break;case"multiple":r=i;default:i!==u&&ie(e,t,l,i,a,u)}t=o,n=r,a=m,d!=null?Ll(e,!!n,d,!1):!!a!=!!n&&(t!=null?Ll(e,!!n,t,!0):Ll(e,!!n,n?[]:"",!1));return;case"textarea":m=d=null;for(o in n)if(l=n[o],n.hasOwnProperty(o)&&l!=null&&!a.hasOwnProperty(o))switch(o){case"value":break;case"children":break;default:ie(e,t,o,null,a,l)}for(r in a)if(l=a[r],i=n[r],a.hasOwnProperty(r)&&(l!=null||i!=null))switch(r){case"value":d=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(l!=null)throw Error(S(91));break;default:l!==i&&ie(e,t,r,l,a,i)}_h(e,d,m);return;case"option":for(var v in n)if(d=n[v],n.hasOwnProperty(v)&&d!=null&&!a.hasOwnProperty(v))switch(v){case"selected":e.selected=!1;break;default:ie(e,t,v,null,a,d)}for(u in a)if(d=a[u],m=n[u],a.hasOwnProperty(u)&&d!==m&&(d!=null||m!=null))switch(u){case"selected":e.selected=d&&typeof d!="function"&&typeof d!="symbol";break;default:ie(e,t,u,d,a,m)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var A in n)d=n[A],n.hasOwnProperty(A)&&d!=null&&!a.hasOwnProperty(A)&&ie(e,t,A,null,a,d);for(c in a)if(d=a[c],m=n[c],a.hasOwnProperty(c)&&d!==m&&(d!=null||m!=null))switch(c){case"children":case"dangerouslySetInnerHTML":if(d!=null)throw Error(S(137,t));break;default:ie(e,t,c,d,a,m)}return;default:if(vd(t)){for(var b in n)d=n[b],n.hasOwnProperty(b)&&d!==void 0&&!a.hasOwnProperty(b)&&nd(e,t,b,void 0,a,d);for(s in a)d=a[s],m=n[s],!a.hasOwnProperty(s)||d===m||d===void 0&&m===void 0||nd(e,t,s,d,a,m);return}}for(var h in n)d=n[h],n.hasOwnProperty(h)&&d!=null&&!a.hasOwnProperty(h)&&ie(e,t,h,null,a,d);for(f in a)d=a[f],m=n[f],!a.hasOwnProperty(f)||d===m||d==null&&m==null||ie(e,t,f,d,a,m)}function Xm(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function yw(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),a=0;a<n.length;a++){var l=n[a],i=l.transferSize,r=l.initiatorType,o=l.duration;if(i&&o&&Xm(r)){for(r=0,o=l.responseEnd,a+=1;a<n.length;a++){var u=n[a],c=u.startTime;if(c>o)break;var s=u.transferSize,f=u.initiatorType;s&&Xm(f)&&(u=u.responseEnd,r+=s*(u<o?1:(o-c)/(u-c)))}if(--a,t+=8*(i+r)/(l.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var ad=null,ld=null;function mu(e){return e.nodeType===9?e:e.ownerDocument}function Qm(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Hy(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function id(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var hs=null;function vw(){var e=window.event;return e&&e.type==="popstate"?e===hs?!1:(hs=e,!0):(hs=null,!1)}var zy=typeof setTimeout=="function"?setTimeout:void 0,bw=typeof clearTimeout=="function"?clearTimeout:void 0,Km=typeof Promise=="function"?Promise:void 0,Aw=typeof queueMicrotask=="function"?queueMicrotask:typeof Km<"u"?function(e){return Km.resolve(null).then(e).catch(ww)}:zy;function ww(e){setTimeout(function(){throw e})}function Aa(e){return e==="head"}function Zm(e,t){var n=t,a=0;do{var l=n.nextSibling;if(e.removeChild(n),l&&l.nodeType===8)if(n=l.data,n==="/$"||n==="/&"){if(a===0){e.removeChild(l),Il(t);return}a--}else if(n==="$"||n==="$?"||n==="$~"||n==="$!"||n==="&")a++;else if(n==="html")ar(e.ownerDocument.documentElement);else if(n==="head"){n=e.ownerDocument.head,ar(n);for(var i=n.firstChild;i;){var r=i.nextSibling,o=i.nodeName;i[Sr]||o==="SCRIPT"||o==="STYLE"||o==="LINK"&&i.rel.toLowerCase()==="stylesheet"||n.removeChild(i),i=r}}else n==="body"&&ar(e.ownerDocument.body);n=l}while(n);Il(t)}function Wm(e,t){var n=e;e=0;do{var a=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),a&&a.nodeType===8)if(n=a.data,n==="/$"){if(e===0)break;e--}else n!=="$"&&n!=="$?"&&n!=="$~"&&n!=="$!"||e++;n=a}while(n)}function rd(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":rd(n),yd(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function Sw(e,t,n,a){for(;e.nodeType===1;){var l=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[Sr])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(i=e.getAttribute("rel"),i==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(i!==l.rel||e.getAttribute("href")!==(l.href==null||l.href===""?null:l.href)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin)||e.getAttribute("title")!==(l.title==null?null:l.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(i=e.getAttribute("src"),(i!==(l.src==null?null:l.src)||e.getAttribute("type")!==(l.type==null?null:l.type)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin))&&i&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var i=l.name==null?null:""+l.name;if(l.type==="hidden"&&e.getAttribute("name")===i)return e}else return e;if(e=Qt(e.nextSibling),e===null)break}return null}function Cw(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=Qt(e.nextSibling),e===null))return null;return e}function Uy(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=Qt(e.nextSibling),e===null))return null;return e}function od(e){return e.data==="$?"||e.data==="$~"}function ud(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function Rw(e,t){var n=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||n.readyState!=="loading")t();else{var a=function(){t(),n.removeEventListener("DOMContentLoaded",a)};n.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function Qt(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var cd=null;function Im(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"||n==="/&"){if(t===0)return Qt(e.nextSibling);t--}else n!=="$"&&n!=="$!"&&n!=="$?"&&n!=="$~"&&n!=="&"||t++}e=e.nextSibling}return null}function Jm(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"){if(t===0)return e;t--}else n!=="/$"&&n!=="/&"||t++}e=e.previousSibling}return null}function Gy(e,t,n){switch(t=mu(n),e){case"html":if(e=t.documentElement,!e)throw Error(S(452));return e;case"head":if(e=t.head,!e)throw Error(S(453));return e;case"body":if(e=t.body,!e)throw Error(S(454));return e;default:throw Error(S(451))}}function ar(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);yd(e)}var Kt=new Map,$m=new Set;function hu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Pn=$.d;$.d={f:Tw,r:Ew,D:Dw,C:xw,L:Mw,m:_w,X:Nw,S:Bw,M:Ow};function Tw(){var e=Pn.f(),t=Nu();return e||t}function Ew(e){var t=$l(e);t!==null&&t.tag===5&&t.type==="form"?Np(t):Pn.r(e)}var ai=typeof document>"u"?null:document;function Py(e,t,n){var a=ai;if(a&&typeof t=="string"&&t){var l=jt(t);l='link[rel="'+e+'"][href="'+l+'"]',typeof n=="string"&&(l+='[crossorigin="'+n+'"]'),$m.has(l)||($m.add(l),e={rel:e,crossOrigin:n,href:t},a.querySelector(l)===null&&(t=a.createElement("link"),Ke(t,"link",e),qe(t),a.head.appendChild(t)))}}function Dw(e){Pn.D(e),Py("dns-prefetch",e,null)}function xw(e,t){Pn.C(e,t),Py("preconnect",e,t)}function Mw(e,t,n){Pn.L(e,t,n);var a=ai;if(a&&e&&t){var l='link[rel="preload"][as="'+jt(t)+'"]';t==="image"&&n&&n.imageSrcSet?(l+='[imagesrcset="'+jt(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(l+='[imagesizes="'+jt(n.imageSizes)+'"]')):l+='[href="'+jt(e)+'"]';var i=l;switch(t){case"style":i=Wl(e);break;case"script":i=li(e)}Kt.has(i)||(e=ve({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Kt.set(i,e),a.querySelector(l)!==null||t==="style"&&a.querySelector(xr(i))||t==="script"&&a.querySelector(Mr(i))||(t=a.createElement("link"),Ke(t,"link",e),qe(t),a.head.appendChild(t)))}}function _w(e,t){Pn.m(e,t);var n=ai;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",l='link[rel="modulepreload"][as="'+jt(a)+'"][href="'+jt(e)+'"]',i=l;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=li(e)}if(!Kt.has(i)&&(e=ve({rel:"modulepreload",href:e},t),Kt.set(i,e),n.querySelector(l)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(Mr(i)))return}a=n.createElement("link"),Ke(a,"link",e),qe(a),n.head.appendChild(a)}}}function Bw(e,t,n){Pn.S(e,t,n);var a=ai;if(a&&e){var l=kl(a).hoistableStyles,i=Wl(e);t=t||"default";var r=l.get(i);if(!r){var o={loading:0,preload:null};if(r=a.querySelector(xr(i)))o.loading=5;else{e=ve({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Kt.get(i))&&nf(e,n);var u=r=a.createElement("link");qe(u),Ke(u,"link",e),u._p=new Promise(function(c,s){u.onload=c,u.onerror=s}),u.addEventListener("load",function(){o.loading|=1}),u.addEventListener("error",function(){o.loading|=2}),o.loading|=4,qo(r,t,a)}r={type:"stylesheet",instance:r,count:1,state:o},l.set(i,r)}}}function Nw(e,t){Pn.X(e,t);var n=ai;if(n&&e){var a=kl(n).hoistableScripts,l=li(e),i=a.get(l);i||(i=n.querySelector(Mr(l)),i||(e=ve({src:e,async:!0},t),(t=Kt.get(l))&&af(e,t),i=n.createElement("script"),qe(i),Ke(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function Ow(e,t){Pn.M(e,t);var n=ai;if(n&&e){var a=kl(n).hoistableScripts,l=li(e),i=a.get(l);i||(i=n.querySelector(Mr(l)),i||(e=ve({src:e,async:!0,type:"module"},t),(t=Kt.get(l))&&af(e,t),i=n.createElement("script"),qe(i),Ke(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function eh(e,t,n,a){var l=(l=ra.current)?hu(l):null;if(!l)throw Error(S(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=Wl(n.href),n=kl(l).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=Wl(n.href);var i=kl(l).hoistableStyles,r=i.get(e);if(r||(l=l.ownerDocument||l,r={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(e,r),(i=l.querySelector(xr(e)))&&!i._p&&(r.instance=i,r.state.loading=5),Kt.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Kt.set(e,n),i||kw(l,e,n,r.state))),t&&a===null)throw Error(S(528,""));return r}if(t&&a!==null)throw Error(S(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=li(n),n=kl(l).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(S(444,e))}}function Wl(e){return'href="'+jt(e)+'"'}function xr(e){return'link[rel="stylesheet"]['+e+"]"}function qy(e){return ve({},e,{"data-precedence":e.precedence,precedence:null})}function kw(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Ke(t,"link",n),qe(t),e.head.appendChild(t))}function li(e){return'[src="'+jt(e)+'"]'}function Mr(e){return"script[async]"+e}function th(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+jt(n.href)+'"]');if(a)return t.instance=a,qe(a),a;var l=ve({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),qe(a),Ke(a,"style",l),qo(a,n.precedence,e),t.instance=a;case"stylesheet":l=Wl(n.href);var i=e.querySelector(xr(l));if(i)return t.state.loading|=4,t.instance=i,qe(i),i;a=qy(n),(l=Kt.get(l))&&nf(a,l),i=(e.ownerDocument||e).createElement("link"),qe(i);var r=i;return r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ke(i,"link",a),t.state.loading|=4,qo(i,n.precedence,e),t.instance=i;case"script":return i=li(n.src),(l=e.querySelector(Mr(i)))?(t.instance=l,qe(l),l):(a=n,(l=Kt.get(i))&&(a=ve({},n),af(a,l)),e=e.ownerDocument||e,l=e.createElement("script"),qe(l),Ke(l,"link",a),e.head.appendChild(l),t.instance=l);case"void":return null;default:throw Error(S(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,qo(a,n.precedence,e));return t.instance}function qo(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=a.length?a[a.length-1]:null,i=l,r=0;r<a.length;r++){var o=a[r];if(o.dataset.precedence===t)i=o;else if(i!==l)break}i?i.parentNode.insertBefore(e,i.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function nf(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function af(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var Fo=null;function nh(e,t,n){if(Fo===null){var a=new Map,l=Fo=new Map;l.set(n,a)}else l=Fo,a=l.get(n),a||(a=new Map,l.set(n,a));if(a.has(e))return a;for(a.set(e,null),n=n.getElementsByTagName(e),l=0;l<n.length;l++){var i=n[l];if(!(i[Sr]||i[Ve]||e==="link"&&i.getAttribute("rel")==="stylesheet")&&i.namespaceURI!=="http://www.w3.org/2000/svg"){var r=i.getAttribute(t)||"";r=e+r;var o=a.get(r);o?o.push(i):a.set(r,[i])}}return a}function ah(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function Lw(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Fy(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Hw(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var l=Wl(a.href),i=t.querySelector(xr(l));if(i){t=i._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=pu.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=i,qe(i);return}i=t.ownerDocument||t,a=qy(a),(l=Kt.get(l))&&nf(a,l),i=i.createElement("link"),qe(i);var r=i;r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ke(i,"link",a),n.instance=i}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=pu.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var ps=0;function zw(e,t){return e.stylesheets&&e.count===0&&jo(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var a=setTimeout(function(){if(e.stylesheets&&jo(e,e.stylesheets),e.unsuspend){var i=e.unsuspend;e.unsuspend=null,i()}},6e4+t);0<e.imgBytes&&ps===0&&(ps=62500*yw());var l=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&jo(e,e.stylesheets),e.unsuspend)){var i=e.unsuspend;e.unsuspend=null,i()}},(e.imgBytes>ps?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(l)}}:null}function pu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)jo(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var yu=null;function jo(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,yu=new Map,t.forEach(Uw,e),yu=null,pu.call(e))}function Uw(e,t){if(!(t.state.loading&4)){var n=yu.get(e);if(n)var a=n.get(null);else{n=new Map,yu.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i<l.length;i++){var r=l[i];(r.nodeName==="LINK"||r.getAttribute("media")!=="not all")&&(n.set(r.dataset.precedence,r),a=r)}a&&n.set(null,a)}l=t.instance,r=l.getAttribute("data-precedence"),i=n.get(r)||a,i===a&&n.set(null,l),n.set(r,l),this.count++,a=pu.bind(this),l.addEventListener("load",a),l.addEventListener("error",a),i?i.parentNode.insertBefore(l,i.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(l,e.firstChild)),t.state.loading|=4}}var hr={$$typeof:Mn,Provider:null,Consumer:null,_currentValue:za,_currentValue2:za,_threadCount:0};function Gw(e,t,n,a,l,i,r,o,u){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Fc(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fc(0),this.hiddenUpdates=Fc(null),this.identifierPrefix=a,this.onUncaughtError=l,this.onCaughtError=i,this.onRecoverableError=r,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=u,this.incompleteTransitions=new Map}function jy(e,t,n,a,l,i,r,o,u,c,s,f){return e=new Gw(e,t,n,r,u,c,s,f,o),t=1,i===!0&&(t|=24),i=Tt(3,null,null,t),e.current=i,i.stateNode=e,t=Md(),t.refCount++,e.pooledCache=t,t.refCount++,i.memoizedState={element:a,isDehydrated:n,cache:t},Nd(i),e}function Yy(e){return e?(e=_l,e):_l}function Vy(e,t,n,a,l,i){l=Yy(l),a.context===null?a.context=l:a.pendingContext=l,a=ua(t),a.payload={element:n},i=i===void 0?null:i,i!==null&&(a.callback=i),n=ca(e,a,t),n!==null&&(yt(n,e,t),Zi(n,e,t))}function lh(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function lf(e,t){lh(e,t),(e=e.alternate)&&lh(e,t)}function Xy(e){if(e.tag===13||e.tag===31){var t=Wa(e,67108864);t!==null&&yt(t,e,67108864),lf(e,67108864)}}function ih(e){if(e.tag===13||e.tag===31){var t=_t();t=hd(t);var n=Wa(e,t);n!==null&&yt(n,e,t),lf(e,t)}}var vu=!0;function Pw(e,t,n,a){var l=L.T;L.T=null;var i=$.p;try{$.p=2,rf(e,t,n,a)}finally{$.p=i,L.T=l}}function qw(e,t,n,a){var l=L.T;L.T=null;var i=$.p;try{$.p=8,rf(e,t,n,a)}finally{$.p=i,L.T=l}}function rf(e,t,n,a){if(vu){var l=sd(a);if(l===null)ms(e,t,a,bu,n),rh(e,a);else if(jw(l,e,t,n,a))a.stopPropagation();else if(rh(e,a),t&4&&-1<Fw.indexOf(e)){for(;l!==null;){var i=$l(l);if(i!==null)switch(i.tag){case 3:if(i=i.stateNode,i.current.memoizedState.isDehydrated){var r=ka(i.pendingLanes);if(r!==0){var o=i;for(o.pendingLanes|=2,o.entangledLanes|=2;r;){var u=1<<31-Mt(r);o.entanglements[1]|=u,r&=~u}hn(i),(J&6)===0&&(uu=Dt()+500,Dr(0,!1))}}break;case 31:case 13:o=Wa(i,2),o!==null&&yt(o,i,2),Nu(),lf(i,2)}if(i=sd(a),i===null&&ms(e,t,a,bu,n),i===l)break;l=i}l!==null&&a.stopPropagation()}else ms(e,t,a,null,n)}}function sd(e){return e=bd(e),of(e)}var bu=null;function of(e){if(bu=null,e=Rl(e),e!==null){var t=vr(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=fh(t),e!==null)return e;e=null}else if(n===31){if(e=gh(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return bu=e,null}function Qy(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Mb()){case yh:return 2;case vh:return 8;case Ko:case _b:return 32;case bh:return 268435456;default:return 32}default:return 32}}var dd=!1,fa=null,ga=null,ma=null,pr=new Map,yr=new Map,ea=[],Fw="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function rh(e,t){switch(e){case"focusin":case"focusout":fa=null;break;case"dragenter":case"dragleave":ga=null;break;case"mouseover":case"mouseout":ma=null;break;case"pointerover":case"pointerout":pr.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":yr.delete(t.pointerId)}}function Ui(e,t,n,a,l,i){return e===null||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:i,targetContainers:[l]},t!==null&&(t=$l(t),t!==null&&Xy(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,l!==null&&t.indexOf(l)===-1&&t.push(l),e)}function jw(e,t,n,a,l){switch(t){case"focusin":return fa=Ui(fa,e,t,n,a,l),!0;case"dragenter":return ga=Ui(ga,e,t,n,a,l),!0;case"mouseover":return ma=Ui(ma,e,t,n,a,l),!0;case"pointerover":var i=l.pointerId;return pr.set(i,Ui(pr.get(i)||null,e,t,n,a,l)),!0;case"gotpointercapture":return i=l.pointerId,yr.set(i,Ui(yr.get(i)||null,e,t,n,a,l)),!0}return!1}function Ky(e){var t=Rl(e.target);if(t!==null){var n=vr(t);if(n!==null){if(t=n.tag,t===13){if(t=fh(n),t!==null){e.blockedOn=t,jg(e.priority,function(){ih(n)});return}}else if(t===31){if(t=gh(n),t!==null){e.blockedOn=t,jg(e.priority,function(){ih(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Yo(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=sd(e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);Ms=a,n.target.dispatchEvent(a),Ms=null}else return t=$l(n),t!==null&&Xy(t),e.blockedOn=n,!1;t.shift()}return!0}function oh(e,t,n){Yo(e)&&n.delete(t)}function Yw(){dd=!1,fa!==null&&Yo(fa)&&(fa=null),ga!==null&&Yo(ga)&&(ga=null),ma!==null&&Yo(ma)&&(ma=null),pr.forEach(oh),yr.forEach(oh)}function xo(e,t){e.blockedOn===t&&(e.blockedOn=null,dd||(dd=!0,Ge.unstable_scheduleCallback(Ge.unstable_NormalPriority,Yw)))}var Mo=null;function uh(e){Mo!==e&&(Mo=e,Ge.unstable_scheduleCallback(Ge.unstable_NormalPriority,function(){Mo===e&&(Mo=null);for(var t=0;t<e.length;t+=3){var n=e[t],a=e[t+1],l=e[t+2];if(typeof a!="function"){if(of(a||n)===null)continue;break}var i=$l(n);i!==null&&(e.splice(t,3),t-=3,Vs(i,{pending:!0,data:l,method:n.method,action:a},a,l))}}))}function Il(e){function t(u){return xo(u,e)}fa!==null&&xo(fa,e),ga!==null&&xo(ga,e),ma!==null&&xo(ma,e),pr.forEach(t),yr.forEach(t);for(var n=0;n<ea.length;n++){var a=ea[n];a.blockedOn===e&&(a.blockedOn=null)}for(;0<ea.length&&(n=ea[0],n.blockedOn===null);)Ky(n),n.blockedOn===null&&ea.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(a=0;a<n.length;a+=3){var l=n[a],i=n[a+1],r=l[vt]||null;if(typeof i=="function")r||uh(n);else if(r){var o=null;if(i&&i.hasAttribute("formAction")){if(l=i,r=i[vt]||null)o=r.formAction;else if(of(l)!==null)continue}else o=r.action;typeof o=="function"?n[a+1]=o:(n.splice(a,3),a-=3),uh(n)}}}function Zy(){function e(i){i.canIntercept&&i.info==="react-transition"&&i.intercept({handler:function(){return new Promise(function(r){return l=r})},focusReset:"manual",scroll:"manual"})}function t(){l!==null&&(l(),l=null),a||setTimeout(n,20)}function n(){if(!a&&!navigation.transition){var i=navigation.currentEntry;i&&i.url!=null&&navigation.navigate(i.url,{state:i.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,l=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){a=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),l!==null&&(l(),l=null)}}}function uf(e){this._internalRoot=e}Lu.prototype.render=uf.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(S(409));var n=t.current,a=_t();Vy(n,a,e,t,null,null)};Lu.prototype.unmount=uf.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;Vy(e.current,2,null,e,null,null),Nu(),t[Jl]=null}};function Lu(e){this._internalRoot=e}Lu.prototype.unstable_scheduleHydration=function(e){if(e){var t=Rh();e={blockedOn:null,target:e,priority:t};for(var n=0;n<ea.length&&t!==0&&t<ea[n].priority;n++);ea.splice(n,0,e),n===0&&Ky(e)}};var ch=sh.version;if(ch!=="19.2.8")throw Error(S(527,ch,"19.2.8"));$.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(S(188)):(e=Object.keys(e).join(","),Error(S(268,e)));return e=Sb(t),e=e!==null?mh(e):null,e=e===null?null:e.stateNode,e};var Vw={bundleType:0,version:"19.2.8",rendererPackageName:"react-dom",currentDispatcherRef:L,reconcilerVersion:"19.2.8"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Gi=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Gi.isDisabled&&Gi.supportsFiber))try{br=Gi.inject(Vw),xt=Gi}catch{}var Gi;Hu.createRoot=function(e,t){if(!dh(e))throw Error(S(299));var n=!1,a="",l=Pp,i=qp,r=Fp;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(l=t.onUncaughtError),t.onCaughtError!==void 0&&(i=t.onCaughtError),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=jy(e,1,!1,null,null,n,a,null,l,i,r,Zy),e[Jl]=t.current,tf(e),new uf(t)};Hu.hydrateRoot=function(e,t,n){if(!dh(e))throw Error(S(299));var a=!1,l="",i=Pp,r=qp,o=Fp,u=null;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onUncaughtError!==void 0&&(i=n.onUncaughtError),n.onCaughtError!==void 0&&(r=n.onCaughtError),n.onRecoverableError!==void 0&&(o=n.onRecoverableError),n.formState!==void 0&&(u=n.formState)),t=jy(e,1,!0,t,n??null,a,l,u,i,r,o,Zy),t.context=Yy(null),n=t.current,a=_t(),a=hd(a),l=ua(a),l.callback=null,ca(n,l,a),n=a,t.current.lanes=n,wr(t,n),hn(t),e[Jl]=t.current,tf(e),new Lu(t)};Hu.version="19.2.8"});var $y=un((jS,Jy)=>{"use strict";function Iy(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Iy)}catch(e){console.error(e)}}Iy(),Jy.exports=Wy()});var t0=un(zu=>{"use strict";var Xw=Symbol.for("react.transitional.element"),Qw=Symbol.for("react.fragment");function e0(e,t,n){var a=null;if(n!==void 0&&(a=""+n),t.key!==void 0&&(a=""+t.key),"key"in t){n={};for(var l in t)l!=="key"&&(n[l]=t[l])}else n=t;return t=n.ref,{$$typeof:Xw,type:e,key:a,ref:t!==void 0?t:null,props:n}}zu.Fragment=Qw;zu.jsx=e0;zu.jsxs=e0});var O=un((VS,n0)=>{"use strict";n0.exports=t0()});var Lt=B(ft(),1),s1=B($y(),1);var Wv=B(ft(),1);var qn=B(O(),1);function Kw(e){return{under50:"Under $50",over50:"Over $50",over30:"Over $30",over500:"Over $500","50_100":"$50 - $100","100_200":"$100 - $200","200_500":"$200 - $500"}[e]||e}function a0({activeDealTag:e,activeFreeformTags:t,airedaleTags:n,freeformTags:a,discountAmount:l,onBrandSelect:i,onBrandToggle:r,onDiscountAmountChange:o,onPriceRangeChange:u,onTagClear:c,onFreeformTagClear:s,onFreeformTagToggle:f,priceRange:d,selectedBrands:m}){let v=m.map(b=>({type:"brand",value:b,label:b}));if(e){let b=n.find(h=>h.startsWith(e+":::")||h===e);v.push({type:"category",value:e,label:b?b.split(":::")[1]||b.split(":::")[0]:e})}if(t.forEach(b=>{let h=a.find(g=>g.handle===b);v.push({type:"freeform-tag",value:b,label:h?.label||b})}),d&&d!=="all"&&v.push({type:"price",value:d,label:Kw(d)}),l&&l!=="0"&&l!=="all"&&v.push({type:"discount",value:l,label:`Min ${l}% off`}),v.length===0)return null;let A=b=>{b.type==="brand"&&r?.(b.value),b.type==="category"&&c(),b.type==="freeform-tag"&&f(b.value),b.type==="discount"&&o?.("0"),b.type==="price"&&u?.("all")};return(0,qn.jsxs)("div",{className:"tg-df-active-badges-row",style:{display:"flex",flexWrap:"wrap",gap:"4px",alignItems:"center",marginTop:"10px",marginBottom:"16px"},children:[v.map(b=>(0,qn.jsxs)("span",{className:"tg-df-active-badge",children:[b.label,(0,qn.jsx)("button",{type:"button",className:"tg-df-badge-remove","aria-label":`Remove ${b.label}`,onClick:()=>A(b),children:(0,qn.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,qn.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,qn.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},b.type+"-"+b.value)),v.length>1&&(0,qn.jsx)("button",{type:"button",className:"tg-df-badge-clear-all",onClick:()=>{i?.([]),c(),s(),o?.("0"),u?.("all")},children:"Clear all"})]})}function l0(e){if(!e)return null;let t=e.documentname||e.title||"";!t&&e.documentnametext&&(t=Array.isArray(e.documentnametext)?e.documentnametext[0]:e.documentnametext),!t&&e.articlename&&(t=Array.isArray(e.articlename)?e.articlename[0]:e.articlename),!t&&e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&(t=e.articlesocialtitle[0]);let n=e.strapline||e.articlestrapline||e.subtitle||e.dek||"";!n&&e.image_thumbnail&&e.image_thumbnail.dek&&(n=e.image_thumbnail.dek),Array.isArray(n)&&(n=n[0]||"");let a="";if(e.articlepage)try{let l=e.articlepage;if(typeof l=="string")try{l=JSON.parse(l)}catch{}if(Array.isArray(l)&&l.length>0){let i=l[0];if(typeof i=="string")try{i=JSON.parse(i)}catch{}if(Array.isArray(i)){let r=[];for(let o of i){if(o.type==="featured-product")break;if(o.type==="text"&&o.data)Array.isArray(o.data.paragraphs)?o.data.paragraphs.forEach(u=>{u&&r.push(u.startsWith("<")?u:`<p>${u}<\/p>`)}):typeof o.data.text=="string"&&o.data.text&&r.push(o.data.text.startsWith("<")?o.data.text:`<p>${o.data.text}<\/p>`);else if(o.type==="section"&&o.data){let u=o.data.text||o.data.heading||o.data.title||"";u&&r.push(`<div class="tg-df-article-section-banner"><span>${u}<\/span><\/div>`)}}r.length>0&&(a=r.join(""))}}}catch(l){console.error("Error parsing articlepage",l)}return!a&&e.content?a=typeof e.content=="string"?e.content:"":!a&&e.intro?a=typeof e.intro=="string"?e.intro:"":!a&&e.paragraphs&&(a=(Array.isArray(e.paragraphs)?e.paragraphs:[e.paragraphs]).map(i=>`<p>${i}<\/p>`).join("")),{headline:t,strapline:n,contentHtml:a}}var ii=B(O(),1);function i0({articles:e,selectedArticleId:t}){if(!t)return null;let n=e.find(l=>l.id===t);if(!n)return null;let a=l0(n);return!a||!a.headline&&!a.strapline&&!a.contentHtml?null:(0,ii.jsxs)("div",{className:"tg-df-article-intro-container",id:"tg-df-article-intro",style:{margin:"0 auto 32px",width:"100%",maxWidth:"800px",textAlign:"left",padding:"0 16px"},children:[a.headline&&(0,ii.jsx)("h2",{className:"tg-df-article-headline",id:"tg-df-article-headline",style:{fontSize:"1.75rem",fontWeight:800,color:"#0f172a",marginBottom:"1rem",lineHeight:1.25},children:a.headline}),a.strapline&&(0,ii.jsx)("p",{className:"tg-df-article-strapline",id:"tg-df-article-strapline",style:{fontSize:"1.125rem",fontWeight:600,color:"#334155",marginBottom:"1.25rem",lineHeight:1.4},children:a.strapline}),a.contentHtml&&(0,ii.jsx)("div",{className:"tg-df-article-content",id:"tg-df-article-content",dangerouslySetInnerHTML:{__html:a.contentHtml}})]})}var Fn=B(O(),1);function Zw({articles:e,authorHandle:t,authorName:n}){let a=n||e.length>0&&(e[0].articleauthortext?.[0]||e[0].articleauthor?.[0])||"Author";(t==="all-authors"||n==="all-authors"||n==="All authors")&&(a="All authors");let l=a.trim().split(" ")[0]||"Author";return a==="All authors"&&(l="All authors"),`Shop all ${l==="All authors"?"authors'":l.endsWith("'s")||l.endsWith("\u2019s")?l:`${l}'s`} collections`}function Ww(e){let t=[];return e.documentnametext&&t.push(e.documentnametext),e.documentname&&t.push(e.documentname),e.articlename&&t.push(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&t.push(...e.articlesocialtitle),t.length>0?t.reduce((n,a)=>a&&a.length<n.length?a:n,t[0]):"Article"}function r0({articles:e,authorHandle:t,authorName:n,onChange:a,selectedArticleId:l,shortenedHeadlines:i}){return(0,Fn.jsx)("div",{className:"tg-df-top-bar",id:"tg-df-top-bar",style:{position:"relative",zIndex:100,margin:"0 auto 20px",width:"100%",display:"flex",justifyContent:"center"},children:(0,Fn.jsxs)("div",{className:"tg-df-sort-wrapper",style:{width:"auto",maxWidth:"320px",display:"inline-flex",position:"relative"},children:[(0,Fn.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",style:{position:"absolute",left:"14px",top:"50%",transform:"translateY(-50%)",width:"14px",height:"14px",color:"var(--tg-df-text-muted)",pointerEvents:"none",zIndex:2},children:(0,Fn.jsx)("path",{d:"M12 2l-10 4.5 10 4.5 10-4.5-10-4.5zm0 6.5l-8-3.6 8-3.6 8 3.6-8 3.6zm-10 6l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5zm0 5l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5z"})}),(0,Fn.jsxs)("select",{className:"tg-df-filter-select tg-df-article-select",style:{width:"100%",maxWidth:"320px",padding:"10px 36px 10px 38px",fontSize:"14px",fontWeight:500,borderRadius:"100px",border:"1px solid var(--tg-df-border)",color:"var(--tg-df-text)",backgroundColor:"var(--tg-df-bg-secondary)",appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 14px center",textAlign:"left",textAlignLast:"left",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",cursor:"pointer"},value:l||"",onChange:r=>a(r.target.value),children:[(0,Fn.jsx)("option",{value:"",style:{textAlign:"left"},children:Zw({articles:e,authorHandle:t,authorName:n})}),e.map(r=>{let o=i?.[r.id]||Ww(r);return o&&o.length>38&&(o=o.substring(0,36)+"\u2026"),(0,Fn.jsx)("option",{value:r.id,style:{textAlign:"left"},children:o},r.id)})]})]})})}var A0=B(ft(),1);function o0(e,t=new Date){if(!e)return"";let n=new Date(e),a=Math.floor((t.getTime()-n.getTime())/1e3);if(a<60)return"Just now";let l=Math.floor(a/60);if(l<60)return`${l} min${l>1?"s":""} ago`;let i=Math.floor(l/60);if(i<24)return`${i} hr${i>1?"s":""} ago`;let r=Math.floor(i/24);if(r<30)return`${r} day${r>1?"s":""} ago`;let o=Math.floor(r/30);if(o<12)return`${o} mo${o>1?"s":""} ago`;let u=Math.floor(r/365);return`${u} yr${u>1?"s":""} ago`}function Iw(e){return e.replace(/<\/p\s*>/gi," ").replace(/<p[^>]*>/gi," ").replace(/<br\s*\/?>/gi," ").replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}function _r(e,t,n){let a="";return n==="short"?a=e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"":a=e.articleauthorlongbio&&e.articleauthorlongbio[t]&&e.articleauthorlongbio[t]!=="null"?e.articleauthorlongbio[t]:e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"",a?Iw(a):""}function u0(e,t){return e.articleauthorrole&&e.articleauthorrole[t]&&e.articleauthorrole[t]!=="null"?e.articleauthorrole[t]:""}function c0(e,t){return e.articleauthormedia&&e.articleauthormedia[t]?e.articleauthormedia[t]:""}function ri(e){if(typeof e!="string"||!e.trim())return"";try{let t=new URL(e);if(t.hostname.toLowerCase()!=="cdn.mos.cms.futurecdn.net")return e;let n=/\.(?:jpe?g|png|webp)$/i;return!n.test(t.pathname)||/-\d+-\d+\.(?:jpe?g|png|webp)$/i.test(t.pathname)?e:(t.pathname=t.pathname.replace(n,"-480-80$&"),t.toString())}catch{return e}}function Uu(e,t=0){if(!e||!e.articleauthorsocialnetworks)return[];let n=e.articleauthorsocialnetworks[t];if(n||(n=e.articleauthorsocialnetworks[0]),!n)return[];let a=null;if(typeof n=="string")try{a=JSON.parse(n)}catch{try{a=JSON.parse(n.replace(/\\"/g,'"'))}catch{}}else typeof n=="object"&&n!==null&&(a=n);if(!a||typeof a!="object")return[];let l=[];for(let[i,r]of Object.entries(a)){if(!r)continue;let o="",u="";if(typeof r=="string"?o=r:typeof r=="object"&&r!==null&&(o=r.url||r.address||r.link||"",u=r.address||""),!o&&!u)continue;let c=i.toLowerCase().trim(),s=o||u;c==="email"?s.startsWith("mailto:")||(s=s.includes("@")?`mailto:${s}`:`mailto:${s}`):!s.startsWith("http://")&&!s.startsWith("https://")&&!s.startsWith("//")&&(s=`https://${s}`);let f=c.charAt(0).toUpperCase()+c.slice(1);c==="linkedin"?f="LinkedIn":c==="youtube"?f="YouTube":c==="tiktok"?f="TikTok":c==="twitch"?f="Twitch":c==="steam"?f="Steam":c==="github"?f="GitHub":c==="rss"?f="RSS":(c==="x"||c==="twitter")&&(f="X (Twitter)"),l.push({key:c,href:s,label:f})}return l}function ee(e){if(!e)return"";let t=String(e);for(let n=0;n<3;n+=1){let a=t.replace(/&/gi,"&").replace(/£/g,"\xA3").replace(/£/gi,"\xA3").replace(/$/g,"$").replace(/&dollar;/gi,"$").replace(/€/g,"\u20AC").replace(/€/gi,"\u20AC").replace(/&#(\d+);/g,(l,i)=>String.fromCharCode(Number(i))).replace(/&#x([0-9a-f]+);/gi,(l,i)=>String.fromCharCode(parseInt(i,16)));if(a===t)break;t=a}return t}var Ee=B(O(),1);function cf({authorUrl:e,deal:t}){if(!t.authorName)return null;let n=ee(String(t.authorName)),a=t.authorRole&&!["null","nul","undefined"].includes(String(t.authorRole).toLowerCase())?` \u2022 ${ee(String(t.authorRole))}`:"";return(0,Ee.jsx)("div",{className:"tg-df-author-line-desktop",style:{padding:"0 0 12px 0"},children:(0,Ee.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[t.authorImage&&(0,Ee.jsx)("img",{src:ri(t.authorImage),alt:n,className:"tg-df-author-img",width:"36",height:"36",style:{borderRadius:"50%",objectFit:"cover",flexShrink:0,aspectRatio:"1 / 1",minWidth:"36px",minHeight:"36px"}}),(0,Ee.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,Ee.jsx)("div",{style:{fontSize:"10px",color:"var(--tg-df-text-muted)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"2px",fontWeight:600},children:t.isReviewProduct?(0,Ee.jsx)(Ee.Fragment,{children:"Product tested by:"}):t.isBuyingGuideProduct?(0,Ee.jsx)(Ee.Fragment,{children:"Expert review by:"}):t.isFeatured?(0,Ee.jsxs)(Ee.Fragment,{children:[(0,Ee.jsx)("span",{style:{color:"#FF6600"},children:"Top product"})," ","recommended by:"]}):(0,Ee.jsxs)(Ee.Fragment,{children:[(0,Ee.jsx)("span",{style:{color:"#FF6600"},children:t.merchant})," ","deal recommended by:"]})}),(0,Ee.jsxs)("div",{style:{fontSize:"11px",color:"var(--tg-df-text)",lineHeight:1.2},children:[(0,Ee.jsx)("strong",{children:(0,Ee.jsx)("a",{href:e,target:"_blank",rel:"noopener",style:{textDecoration:"none",color:"inherit",borderBottom:"1px dotted var(--tg-df-text-muted)"},children:n})}),a,t.modifiedDate?(0,Ee.jsxs)("span",{style:{color:"var(--tg-df-text-muted)"},children:[" ","\u2022 ",o0(t.modifiedDate)]}):""]})]})]})})}var K=B(O(),1);function s0({authorUrl:e,deal:t,hideHawkPrices:n,msrpFormatted:a,sourceArticleUrl:l}){let i=ee(String(t.merchant||"")),r=ee(String(t.currency||""));if(t.isBuyingGuideProduct||t.isReviewProduct){let o=!!t.hasCommerceOffer,u=o&&!t.isCheckPrice,c=!!t.hawkPricePending,s=!!t.isReviewProduct&&!c&&!o,f=n&&o&&Array.isArray(t.hawkListings)?t.hawkListings.filter(m=>m?.merchant&&m?.url).slice(0,4):[],d=f.length>0;return(0,K.jsxs)("div",{className:"tg-df-card-footer",children:[c?(0,K.jsx)("div",{className:"tg-df-card-price-group","aria-live":"polite",children:(0,K.jsx)("span",{className:"tg-df-card-price",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"Checking live price\u2026"})}):d?(0,K.jsxs)("div",{className:"tg-df-card-listings",children:[(0,K.jsx)("span",{className:"tg-df-card-listings-title",children:"Today's cheapest prices:"}),(0,K.jsx)("div",{className:"tg-df-card-listings-links",children:f.map((m,v)=>{let A=ee(String(m.merchant));return(0,K.jsx)("a",{"aria-label":`View product at ${A}`,className:"tg-df-card-listing-link hawk-affiliate-link-container","data-fcaw-affiliate-link":"","data-merchant":A,"data-merchant-id":m.merchantId||void 0,"data-model-id":m.modelId||void 0,"data-product-key":m.productKey||void 0,href:m.url,rel:"sponsored nofollow noopener",target:"_blank",children:A},`${m.merchant}-${m.url}-${v}`)})})]}):u?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,K.jsx)("span",{className:"tg-df-card-merchant-pill",title:i,children:i})}),(0,K.jsxs)("div",{className:"tg-df-card-price-group",children:[(0,K.jsxs)("span",{className:"tg-df-card-price",children:[r,(0,K.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,K.jsx)("span",{className:"tg-df-card-msrp",children:a})]})]}):s?(0,K.jsx)("div",{className:"tg-df-card-price-group",children:(0,K.jsx)("span",{className:"tg-df-card-price tg-df-card-price--unavailable",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"No retail listing found"})}):null,(0,K.jsx)(cf,{authorUrl:e,deal:t}),!d&&(0,K.jsx)("a",{href:o?t.url:l,"data-fcaw-affiliate-link":o?"":void 0,target:"_blank",rel:o?"sponsored nofollow noopener":"noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},children:o?u?"VIEW DEAL":"CHECK PRICE":"READ REVIEW"})]})}return(0,K.jsxs)("div",{className:"tg-df-card-footer",children:[!(t.authorName&&!t.isFeatured)&&(0,K.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,K.jsx)("span",{className:"tg-df-card-merchant-pill",title:i,children:i})}),(0,K.jsx)("div",{className:"tg-df-card-price-group",children:t.isCheckPrice?(0,K.jsx)("span",{className:"tg-df-card-price",style:{fontSize:"15px",fontWeight:500,fontStyle:"italic"},children:"See price at retailer"}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)("span",{className:"tg-df-card-price",children:[r,(0,K.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,K.jsx)("span",{className:"tg-df-card-msrp",children:a})]})}),(0,K.jsx)(cf,{authorUrl:e,deal:t}),(0,K.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":"",target:"_blank",rel:"sponsored nofollow noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},"data-model-id":t.modelId||void 0,"data-product-key":t.productKey||void 0,"data-merchant-id":t.merchantId||void 0,children:t.isCheckPrice?"CHECK PRICE":t.isFeatured?"SHOP NOW":"VIEW DEAL"})]})}var Ze=B(O(),1);function d0({couponStatus:e,deal:t,onOpenVouchers:n}){let a=!!t.hasCommerceOffer;return(0,Ze.jsxs)("div",{className:"tg-df-card-image-box",children:[t.buyingGuideBadge?(0,Ze.jsx)("span",{className:"tg-df-card-discount-badge tg-df-buying-guide-badge",children:t.buyingGuideBadge}):t.savingLabel&&!t.isCheckPrice?(0,Ze.jsx)("span",{className:"tg-df-card-discount-badge",children:ee(t.savingLabel)}):null,(0,Ze.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":a?"":void 0,className:a?"hawk-affiliate-link-deal-widget":void 0,target:"_blank",rel:a?"sponsored nofollow noopener":"noopener",style:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",height:"100%"},children:(0,Ze.jsx)("img",{src:t.image||void 0,alt:ee(String(t.title||"")),className:"tg-df-card-image",loading:"lazy",onError:l=>{t.fallbackImage&&!l.currentTarget.dataset.fb?(l.currentTarget.dataset.fb="1",l.currentTarget.src=t.fallbackImage):l.currentTarget.style.opacity="0"}})}),(0,Ze.jsxs)("div",{className:"tg-df-card-badges",children:[t.isPrime&&(0,Ze.jsxs)("span",{className:"tg-df-tag tg-df-tag-prime",children:[(0,Ze.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor",children:(0,Ze.jsx)("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})})," ","Prime"]}),!t.merchant?.toLowerCase().includes("amazon")&&(e==="loading"||e==="has")&&(0,Ze.jsx)("div",{className:"tg-df-coupon-wrapper",style:{display:"inline-flex",alignItems:"center"},children:e==="loading"?(0,Ze.jsx)("div",{className:"tg-df-coupon-spinner"}):(0,Ze.jsxs)("button",{type:"button",className:"tg-df-tag tg-df-tag-coupons",onClick:l=>{l.preventDefault(),n(t.merchant)},children:[(0,Ze.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ze.jsx)("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),(0,Ze.jsx)("line",{x1:"7",y1:"7",x2:"7.01",y2:"7"})]})," ","Coupons"]})})]})]})}var ct=B(O(),1);function f0({label:e="Tom's Guide:",starRating:t,color:n="#1f69ff"}){if(!t||t<=0)return null;let a=Math.floor(t),l=t-a>=.5?1:0,i=Math.max(0,5-a-l),r=[];for(let o=0;o<a;o++)r.push((0,ct.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:n,stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ct.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`f${o}`));l&&r.push((0,ct.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"url(#halfGrad)",stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,ct.jsx)("defs",{children:(0,ct.jsxs)("linearGradient",{id:"halfGrad",x1:"0",x2:"1",y1:"0",y2:"0",children:[(0,ct.jsx)("stop",{offset:"50%",stopColor:n}),(0,ct.jsx)("stop",{offset:"50%",stopColor:"transparent"})]})}),(0,ct.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})]},"h"));for(let o=0;o<i;o++)r.push((0,ct.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:n,opacity:"0.35",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ct.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`e${o}`));return(0,ct.jsxs)("div",{className:"tg-df-card-stars",style:{display:"flex",alignItems:"center",marginBottom:"8px",fontSize:"13px",fontWeight:600,color:"var(--tg-df-text-muted)"},children:[e&&(0,ct.jsx)("span",{style:{marginRight:"6px"},children:e}),(0,ct.jsx)("div",{style:{display:"flex",gap:"2px"},children:r})]})}var At=B(O(),1);function g0({heading:e,items:t}){return t.length===0?null:(0,At.jsxs)("div",{style:{marginBottom:"10px"},children:[(0,At.jsx)("strong",{style:{display:"block",fontSize:"12px",marginBottom:"3px"},children:e}),(0,At.jsx)("ul",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:0,paddingLeft:"18px"},children:t.map(n=>{let a=ee(String(n));return(0,At.jsx)("li",{children:a},n)})})]})}function m0({cons:e=[],expanded:t,fullReviewUrl:n,onToggle:a,pros:l=[],subtitle:i="",truncateSubtitle:r=!1}){let o=l.length>0||e.length>0,u=ee(i);return!u&&!o?null:(0,At.jsxs)("div",{style:{marginBottom:"12px"},children:[u&&(0,At.jsx)("p",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:"0 0 8px",display:!t&&r?"-webkit-box":"block",WebkitLineClamp:!t&&r?3:void 0,WebkitBoxOrient:!t&&r?"vertical":void 0,overflow:!t&&r?"hidden":void 0},children:u}),t&&o&&(0,At.jsxs)("div",{children:[(0,At.jsx)(g0,{heading:"Pros",items:l}),(0,At.jsx)(g0,{heading:"Cons",items:e})]}),(o||r)&&(0,At.jsxs)("div",{className:"tg-df-review-summary-actions",style:{alignItems:"flex-start",display:"flex",flexDirection:"column",gap:t&&n?"4px":0},children:[t&&n&&(0,At.jsx)("a",{href:n,target:"_blank",rel:"noopener",className:"tg-df-review-full-link",style:{alignItems:"center",color:"var(--tg-df-blue)",display:"flex",fontSize:"12px",fontWeight:700,minHeight:"40px",paddingRight:"12px",textDecoration:"underline"},children:"Read our full review"}),(0,At.jsx)("button",{type:"button",onClick:c=>{c.preventDefault(),c.stopPropagation(),a()},className:"tg-df-review-summary-toggle",style:{appearance:"none",background:"transparent",border:"none",color:"#000000",cursor:"pointer",fontFamily:"inherit",fontSize:"11px",fontWeight:700,minHeight:"40px",padding:"0 12px 0 0",textTransform:"uppercase"},children:t?"LESS":"READ MORE"})]})]})}var oi=B(ft(),1);var Br=B(O(),1);function h0({text:e,expanded:t,onToggle:n}){let[a,l]=(0,oi.useState)(!1),i=(0,oi.useRef)(null),r=ee(e);return(0,oi.useEffect)(()=>{i.current&&l(i.current.scrollHeight>i.current.clientHeight||i.current.scrollHeight>60)},[r]),r?(0,Br.jsxs)("div",{style:{marginBottom:"12px",position:"relative"},children:[(0,Br.jsx)("p",{ref:i,style:{fontSize:"13px",color:"var(--tg-df-text-muted)",marginBottom:"0",lineHeight:"1.4",display:t?"inline":"-webkit-box",WebkitLineClamp:t?"unset":3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:r}),a&&(0,Br.jsx)("button",{type:"button",onClick:o=>{o.preventDefault(),o.stopPropagation(),n()},style:{display:"block",appearance:"none",border:"none",color:"#000000",fontSize:"11px",fontWeight:700,textTransform:"uppercase",cursor:"pointer",fontFamily:"inherit",position:t?"static":"absolute",bottom:"2px",right:0,background:t?"transparent":"linear-gradient(to right, transparent, #fff 20%, #fff)",padding:t?"0":"0 0 0 16px"},children:t?"LESS":"READ MORE"})]}):null}var p0={pcgamer:"#DC191B",space:"#2E4A7F",tomsguide:"#1F69FF",techradar:"#E40784",golfmonthly:"#FFFFFF",androidcentral:"#1CCC3E",cinemablend:"#FFC033",creativebloq:"#DC361A",cyclingnews:"#371B51",cyclingweekly:"#AE1305",decanter:"#1B1B1B",digitalcameraworld:"#CAEBF2",fitandwell:"#BED100",fourfourtwo:"#AE1006",gamesradar:"#DC361A",guitarplayer:"#FFFFFF",guitarworld:"#DC1F26",homesandgardens:"#185A7D",idealhome:"#CAEBF2",imore:"#FFD600",livescience:"#023953",livingetc:"#FFFFFF",loudersound:"#DC0F17",marieclaireus:"#FFFFFF",marieclaireuk:"#FFFFFF",musicradar:"#006EA9",shortlist:"#2853E0",t3:"#DF0A14",theweek:"#DF0A14",theweekjuniorus:"#10A0B0",tomshardware:"#D8373B",wallpaper:"#FFFFFF",whathifi:"#E02928",whowhatwear:"#FFFFFF",windowscentral:"#CE0E5F",womanandhome:"#2F746E"},Nr={tomsguide:"https://proof.vanilla.tools/media/images/brandLogos/tomsguide.png",techradar:"https://proof.vanilla.tools/media/images/brandLogos/techradar.png",tomshardware:"https://proof.vanilla.tools/media/images/brandLogos/tomshardware.png",pcgamer:"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png",gamesradar:"https://proof.vanilla.tools/media/images/brandLogos/gamesradar.png",creativebloq:"https://proof.vanilla.tools/media/images/brandLogos/creativebloq.png",space:"https://proof.vanilla.tools/media/images/brandLogos/space.png",livescience:"https://proof.vanilla.tools/media/images/brandLogos/livescience.png",cinemablend:"https://proof.vanilla.tools/media/images/brandLogos/cinemablend.png",marieclaireus:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireus.png",marieclaireuk:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireuk.png",homesandgardens:"https://proof.vanilla.tools/media/images/brandLogos/homesandgardens.png",whowhatwear:"https://proof.vanilla.tools/media/images/brandLogos/whowhatwear.png",idealhome:"https://proof.vanilla.tools/media/images/brandLogos/idealhome.png",womanandhome:"https://proof.vanilla.tools/media/images/brandLogos/womanandhome.png",livingetc:"https://proof.vanilla.tools/media/images/brandLogos/livingetc.png",t3:"https://proof.vanilla.tools/media/images/brandLogos/t3.png",whathifi:"https://proof.vanilla.tools/media/images/brandLogos/whathifi.png",digitalcameraworld:"https://proof.vanilla.tools/media/images/brandLogos/digitalcameraworld.png",fitandwell:"https://proof.vanilla.tools/media/images/brandLogos/fitandwell.png",golfmonthly:"https://proof.vanilla.tools/media/images/brandLogos/golfmonthly.png",musicradar:"https://proof.vanilla.tools/media/images/brandLogos/musicradar.png",windowscentral:"https://proof.vanilla.tools/media/images/brandLogos/windowscentral.png",cyclingnews:"https://proof.vanilla.tools/media/images/brandLogos/cyclingnews.png",cyclingweekly:"https://proof.vanilla.tools/media/images/brandLogos/cyclingweekly.png",loudersound:"https://proof.vanilla.tools/media/images/brandLogos/loudersound.png",guitarworld:"https://proof.vanilla.tools/media/images/brandLogos/guitarworld.png",guitarplayer:"https://proof.vanilla.tools/media/images/brandLogos/guitarplayer.png",wallpaper:"https://proof.vanilla.tools/media/images/brandLogos/wallpaper.png",fourfourtwo:"https://proof.vanilla.tools/media/images/brandLogos/fourfourtwo.png",shortlist:"https://proof.vanilla.tools/media/images/brandLogos/shortlist.png",advnture:"https://proof.vanilla.tools/media/images/brandLogos/advnture.png",countrylife:"https://proof.vanilla.tools/media/images/brandLogos/countrylife.png",gardeningknowhow:"https://proof.vanilla.tools/media/images/brandLogos/gardeningknowhow.png",gnomesingardens:"https://proof.vanilla.tools/media/images/brandLogos/gnomesingardens.png",kiplinger:"https://proof.vanilla.tools/media/images/brandLogos/kiplinger.png",moneyweek:"https://proof.vanilla.tools/media/images/brandLogos/moneyweek.png",toptenreviews:"https://proof.vanilla.tools/media/images/brandLogos/toptenreviews.png"},Gu={tomsguide:"Tom's Guide",techradar:"TechRadar",tomshardware:"Tom's Hardware",pcgamer:"PC Gamer",gamesradar:"GamesRadar+",creativebloq:"Creative Bloq",space:"Space",livescience:"Live Science",cinemablend:"CinemaBlend",marieclaireus:"Marie Claire US",marieclaireuk:"Marie Claire UK",homesandgardens:"Homes & Gardens",whowhatwear:"Who What Wear",idealhome:"Ideal Home",womanandhome:"Woman & Home",livingetc:"Living Etc",t3:"T3",whathifi:"What Hi-Fi?",digitalcameraworld:"Digital Camera World",fitandwell:"Fit & Well",golfmonthly:"Golf Monthly",musicradar:"MusicRadar",androidcentral:"Android Central",imore:"iMore",windowscentral:"Windows Central",cyclingnews:"Cycling News",cyclingweekly:"Cycling Weekly",loudersound:"Louder Sound",guitarworld:"Guitar World",guitarplayer:"Guitar Player",theweek:"The Week",theweekjuniorus:"The Week Junior US",wallpaper:"Wallpaper",decanter:"Decanter",fourfourtwo:"FourFourTwo",shortlist:"ShortList",advnture:"Advnture",countrylife:"Country Life",gardeningknowhow:"Gardening Know How",gnomesingardens:"Gnomes in Gardens",kiplinger:"Kiplinger",moneyweek:"Money Week",toptenreviews:"Top 10 Reviews"},y0={pcgamer:[{key:"steam",href:"https://steamcommunity.com/groups/pcgamer",label:"PC Gamer on Steam"},{key:"x",href:"https://twitter.com/pcgamer",label:"PC Gamer on X"},{key:"facebook",href:"https://www.facebook.com/pcgamermagazine",label:"PC Gamer on Facebook"},{key:"instagram",href:"https://www.instagram.com/pcgamer_mag/?hl=en",label:"PC Gamer on Instagram"},{key:"youtube",href:"https://www.youtube.com/user/pcgamer",label:"PC Gamer on YouTube"},{key:"twitch",href:"https://www.twitch.tv/pcgamer",label:"PC Gamer on Twitch"},{key:"tiktok",href:"https://www.tiktok.com/@pcgamer_mag?lang=en",label:"PC Gamer on TikTok"}],homesandgardens:[{key:"instagram",href:"https://www.instagram.com/homesandgardensofficial",label:"Homes & Gardens on Instagram"},{key:"facebook",href:"https://www.facebook.com/homesandgardens/",label:"Homes & Gardens on Facebook"},{key:"x",href:"https://x.com/homesandgardens",label:"Homes & Gardens on X"},{key:"tiktok",href:"https://www.tiktok.com/@homesandgardensofficial",label:"Homes & Gardens on TikTok"},{key:"pinterest",href:"https://pinterest.com/homesgardensofficial/",label:"Homes & Gardens on Pinterest"}],whowhatwear:[{key:"x",href:"https://twitter.com/WhoWhatWear",label:"Who What Wear on X"},{key:"instagram",href:"https://www.instagram.com/whowhatwear/",label:"Who What Wear on Instagram"},{key:"facebook",href:"https://www.facebook.com/WhoWhatWear/",label:"Who What Wear on Facebook"},{key:"pinterest",href:"https://www.pinterest.co.uk/whowhatwearuk/",label:"Who What Wear on Pinterest"},{key:"tiktok",href:"https://www.tiktok.com/@whowhatwear.uk",label:"Who What Wear on TikTok"}]};var Ot=B(O(),1);function v0(e){return String(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").trim().toLowerCase()}function Jw(e){let t=ee(String(e.brand||"")).trim(),n=ee(String(e.productName||e.title||"")).trim(),a=v0(t),l=v0(n);return a.length>0&&l.startsWith(a)&&!/^[a-z0-9]/.test(l.slice(a.length))||!t?n:`${t} ${n}`.trim()}function b0({couponStatus:e,deal:t,editorMode:n,hideHawkPrices:a,isDescriptionExpanded:l,isSelected:i,onDescriptionToggle:r,onOpenVouchers:o,onSelectionChange:u,website:c}){let s=ee(String(t.currency||"")),f=t.rawMsrp?s+t.rawMsrp:null,d=Jw(t),m=ee(String(t.title||"")),v=Gu[c||"tomsguide"]||c||"Tom's Guide",A=(c||"tomsguide").includes(".")?(c||"").startsWith("http")?c:`https://${c}`:`https://www.${c||"tomsguide"}.com`,b=(t.documentUrl||"").replace(/^\/+/,""),h=b.startsWith("http://")||b.startsWith("https://")?b:`${A}/${b}`,g=String(t.sourceArticleUrl||t.documentUrl||t.url||"").replace(/^\/+/,""),p=g.startsWith("http://")||g.startsWith("https://")?g:`${A}/${g}`,y=!!t.hasCommerceOffer;return(0,Ot.jsxs)("div",{className:"tg-df-card","data-brand":t.modelBrand||t.brand||void 0,"data-currency":t.isoCurrencyCode||s||void 0,"data-deal-id":t.externalProductId||t.id||void 0,"data-merchant":t.merchant||void 0,"data-merchant-id":t.merchantId||void 0,"data-model-id":t.modelId||void 0,"data-previous-price":t.rawMsrp||void 0,"data-price":t.rawPrice||void 0,"data-product-key":t.productKey||void 0,"data-product-name":t.productName||t.title||void 0,"data-review-product":t.isReviewProduct?"true":void 0,"data-source-article-url":t.isReviewProduct?p:void 0,children:[n&&(0,Ot.jsx)("input",{type:"checkbox",className:"tg-df-deal-checkbox",checked:i,onChange:C=>u(C.target.checked)}),(0,Ot.jsx)(d0,{couponStatus:e,deal:t,onOpenVouchers:o}),(0,Ot.jsxs)("div",{className:"tg-df-card-body",children:[(0,Ot.jsx)("h3",{className:"tg-df-card-title",title:m,children:(0,Ot.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":y?"":void 0,className:y?"hawk-affiliate-link-container":void 0,target:"_blank",rel:y?"sponsored nofollow noopener":"noopener",style:{textDecoration:"none",color:"inherit"},children:(0,Ot.jsx)("strong",{children:d})})}),(0,Ot.jsx)(f0,{label:t.isBuyingGuideProduct?"":`${v} rating:`,starRating:t.starRating,color:t.isReviewProduct?"var(--tg-df-blue)":void 0}),t.isBuyingGuideProduct||t.isReviewProduct?(0,Ot.jsx)(m0,{cons:t.cons,expanded:l,fullReviewUrl:t.isReviewProduct&&g?p:void 0,onToggle:r,pros:t.pros,subtitle:t.isReviewProduct?t.description:t.subtitle,truncateSubtitle:t.isReviewProduct}):t.description?(0,Ot.jsx)(h0,{text:t.description,expanded:l,onToggle:r}):null,(0,Ot.jsx)(s0,{authorUrl:h,deal:t,hideHawkPrices:a,msrpFormatted:f,sourceArticleUrl:p})]})]})}var ce=B(O(),1);function $w({activeDealTag:e,activeFreeformTags:t=[],query:n,selectedBrands:a=[]}){let l=o=>{let u=String(o||"").trim();return u&&u.toLowerCase()!=="everything"?u:""},r=(t.length>0?t:e?[e]:a.length>0?a:[n]).map(l).filter(Boolean).map(o=>o.replace(/\s+deals?$/i,"").trim()).filter((o,u,c)=>c.findIndex(s=>s.toLowerCase()===o.toLowerCase())===u);return r.length<=1?r[0]||"":`${r.slice(0,-1).join(", ")} or ${r.at(-1)}`}function e2(){return(0,ce.jsx)(ce.Fragment,{children:Array.from({length:6}).map((e,t)=>(0,ce.jsxs)("div",{className:"tg-df-card",children:[(0,ce.jsx)("div",{className:"tg-df-card-image-box tg-df-skeleton"}),(0,ce.jsxs)("div",{className:"tg-df-card-body",children:[(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short",style:{marginBottom:"24px"}}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title",style:{width:"80%"}}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short"}),(0,ce.jsx)("div",{className:"tg-df-card-cta tg-df-skeleton",style:{width:"100%",height:"40px",marginTop:"auto",border:"none"}})]})]},t))})}function t2(e,t){return{"@context":"https://schema.org","@type":"ItemList",itemListElement:e.slice(0,t).map((n,a)=>{let l="USD";return n.currency==="\xA3"?l="GBP":n.currency==="\u20AC"?l="EUR":n.currency==="A$"?l="AUD":n.currency==="CA$"&&(l="CAD"),{"@type":"ListItem",position:a+1,item:{"@type":"Product",name:n.title,image:n.image||"",description:n.description||"",brand:{"@type":"Brand",name:n.brand||""},offers:{"@type":"Offer",priceCurrency:l,price:n.rawPrice||0,url:n.url||"",seller:{"@type":"Organization",name:n.merchant||""}}}}}).filter(n=>n.item.name)}}function w0({activeDealTag:e,activeFreeformTags:t,couponMap:n,deals:a,displayCount:l,editorMode:i,error:r,expandedDealIds:o,hasMore:u,hideHawkPrices:c,loading:s,loadingMore:f,loadMoreStartCount:d,onDescriptionToggle:m,onLoadMore:v,onOpenVouchers:A,query:b,recentDealsOnly:h,selectedBrands:g,selectedDeals:p,setSelectedDeals:y,website:C}){let R=$w({activeDealTag:e,activeFreeformTags:t,query:b,selectedBrands:g}),T=f&&d!=null?d:l,M=!f&&d!=null&&d<T?d:null,w=D=>D.map(k=>(0,ce.jsx)(A0.default.Fragment,{children:(0,ce.jsx)(b0,{couponStatus:n[k.merchant],deal:k,editorMode:i,hideHawkPrices:c,isDescriptionExpanded:o.has(k.id),isSelected:p.has(k.id),onDescriptionToggle:()=>m(k.id),onOpenVouchers:A,onSelectionChange:se=>{let I=new Map(p);se?I.set(k.id,k):I.delete(k.id),y(I)},website:C})},k.id));return(0,ce.jsx)("div",{className:"tg-df-grid-wrapper",children:(0,ce.jsx)("div",{className:"tg-df-grid article-body tg-df-grid-auto",id:"tg-df-grid",children:s?(0,ce.jsx)(e2,{}):r?(0,ce.jsx)("div",{className:"tg-df-message",children:"Failed to load deals. Please try again."}):a.length===0?(0,ce.jsx)("div",{className:"tg-df-message",children:h?`No ${R?`${R} `:""}deals found from the last 30 days.`:!b||b.length<=2||b.toLowerCase()==="everything"?"No deals found for this author.":`No savings squad match your search for "${b}".`}):(0,ce.jsxs)(ce.Fragment,{children:[w(a.slice(0,M??T)),M!=null&&(0,ce.jsx)("div",{"aria-live":"polite",className:"tg-df-load-more-boundary",style:{alignItems:"center",color:"var(--tg-df-text-muted)",display:"flex",fontSize:"13px",fontWeight:600,gridColumn:"1 / -1",justifyContent:"center",marginTop:"16px",minHeight:"40px",overflowAnchor:"none"},children:"More products"}),M!=null&&w(a.slice(M,T)),u&&(0,ce.jsx)("div",{className:"tg-df-load-more-control",style:{width:"100%",display:"flex",justifyContent:"center",marginTop:"16px",gridColumn:"1 / -1",overflowAnchor:"none"},children:(0,ce.jsx)("button",{type:"button",className:"tg-df-tag-outline",style:{padding:"8px 24px",borderRadius:"100px",fontWeight:600,fontSize:"14px",cursor:"pointer"},"aria-busy":f,disabled:f,onClick:D=>{D.preventDefault(),D.stopPropagation(),v()},children:f?"Loading more products\u2026":"Load More"})}),a.length>0&&(0,ce.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(t2(a,T))}})]})})})}var S0=B(O(),1);var pn=B(ft(),1),nn=B(O(),1);function Pu({onScrollLeft:e,onScrollRight:t,showLeft:n,showRight:a}){return(0,nn.jsxs)(nn.Fragment,{children:[(0,nn.jsx)("button",{"aria-label":"Scroll left",className:"tg-df-scroll-btn left tg-df-desktop-only",onClick:e,style:{display:n?"flex":"none"},type:"button",children:(0,nn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,nn.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,nn.jsx)("button",{"aria-label":"Scroll right",className:"tg-df-scroll-btn right tg-df-desktop-only",onClick:t,style:{display:a?"flex":"none"},type:"button",children:(0,nn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,nn.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})}function qu(e){let t=(0,pn.useRef)(null),[n,a]=(0,pn.useState)(!1),[l,i]=(0,pn.useState)(!1),r=(0,pn.useCallback)(()=>{let u=t.current;u&&(a(u.scrollLeft>1),i(Math.ceil(u.scrollLeft+u.clientWidth)<u.scrollWidth-1))},[]);(0,pn.useLayoutEffect)(()=>{let u=t.current;if(!u)return;r();let c=requestAnimationFrame(r),s=typeof ResizeObserver>"u"?null:new ResizeObserver(r);return s?.observe(u),()=>{cancelAnimationFrame(c),s?.disconnect()}},[e,r]);let o=(0,pn.useCallback)(u=>{t.current?.scrollBy({left:u,behavior:"smooth"})},[]);return{onScroll:r,railRef:t,scrollLeft:()=>o(-240),scrollRight:()=>o(240),showLeft:n,showRight:l}}var jn=B(O(),1);function ui({containerClassName:e,itemClassName:t,items:n,loading:a,loadingKey:l,onItemClick:i,rowClassName:r,showCounters:o}){let u=qu(n.length);return n.length===0&&!a?null:(0,jn.jsxs)("div",{className:e,style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[n.length>0&&(0,jn.jsx)(Pu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,jn.jsx)("div",{className:r,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none"},onScroll:u.onScroll,children:n.length>0?n.map(c=>(0,jn.jsxs)("button",{className:t,onClick:()=>i(c.key),style:{border:"none",borderRight:"1px solid var(--tg-df-border)",padding:"12px 20px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"1px",cursor:"pointer",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"6px",...t==="tg-df-brand-row-item"?{transition:"all 0.2s ease"}:{},background:c.selected?"var(--tg-df-bg-secondary)":"var(--tg-df-bg)",color:c.selected?"var(--tg-df-text-primary)":"var(--tg-df-text-muted)",fontWeight:c.selected?600:500},children:[c.label," ",l===c.key&&(0,jn.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading",style:{borderWidth:"2px",height:"12px",width:"12px"}}),o!==!1&&(0,jn.jsx)("span",{style:{color:"var(--tg-df-blue)",fontSize:"10px",...t==="tg-df-brand-row-item"?{fontWeight:400}:{}},children:c.count})]},c.key)):[1,2,3,4,5].map(c=>(0,jn.jsx)("div",{className:"tg-df-skeleton",style:{height:"36px",width:"80px",borderRadius:"18px",flexShrink:0,margin:"8px 12px"}},`${r}-skeleton-${c}`))})]})}var R0=B(O(),1);function C0({airedaleBrands:e,brands:t,loading:n,refreshing:a,onBrandToggle:l,selectedBrands:i,showAuthorCounters:r}){let o=e.length>0?e:t||[],u=o.slice(0,15).map(c=>({count:c.count||0,key:c.formatted_value,label:c.formatted_value,selected:i?.includes(c.formatted_value)||!1}));return(0,R0.jsx)(ui,{containerClassName:"tg-df-brands-row-container",itemClassName:"tg-df-brand-row-item",items:u,loading:n&&o.length===0,loadingKey:a?i?.[0]:null,onItemClick:c=>l?.(c),rowClassName:"tg-df-brands-row",showCounters:r})}var E0=B(O(),1);function T0({activeDealTag:e,airedaleTagCounts:t,airedaleTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>{let c=u.split(":::"),s=c[0];return{count:t[u]||0,key:s,label:c[1]||u,selected:e===s}});return(0,E0.jsx)(ui,{containerClassName:"tg-df-categories-row-container",itemClassName:"tg-df-category-row-item",items:o,loading:a&&n.length===0,loadingKey:l?e:null,onItemClick:i,rowClassName:"tg-df-categories-row",showCounters:r})}var x0=B(O(),1);function D0({activeFreeformTags:e,freeformTagCounts:t,freeformTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>({count:t[u.handle]||0,key:u.handle,label:u.label,selected:e.includes(u.handle)}));return(0,x0.jsx)(ui,{containerClassName:"tg-df-freeform-tags-row-container",itemClassName:"tg-df-freeform-tag-row-item",items:o,loading:a&&n.length===0,loadingKey:l&&e.at(-1)||null,onItemClick:i,rowClassName:"tg-df-freeform-tags-row",showCounters:r})}var _e=B(O(),1),n2=4;function M0({authors:e,clickedAuthorOverride:t,loading:n,refreshing:a,onAuthorClick:l,overriddenAuthorHandle:i,overriddenAuthorName:r,website:o}){let u=qu(e.length);return e.length===0&&!n?null:(0,_e.jsxs)("div",{className:"tg-df-authors-row-container",style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[e.length>0&&(0,_e.jsx)(Pu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,_e.jsx)("div",{className:"tg-df-authors-row tg-df-mobile-authors",onScroll:u.onScroll,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none",gap:"24px",padding:"4px 16px 2px 16px",alignItems:"flex-start"},children:e.length>0?e.map((c,s)=>{let f=Nr[c.brandKey]||Nr[o||"tomsguide"],d=t&&(i===c.handle||r===c.fullName);return(0,_e.jsxs)("div",{className:"tg-df-author-row-item",onClick:()=>l(c),style:{cursor:"pointer",display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px",opacity:t?d?1:.4:1},children:[(0,_e.jsxs)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px",borderRadius:"50%",boxShadow:d?"0 0 0 3px var(--tg-df-blue, #1F69FF)":"none"},children:[(0,_e.jsx)("img",{src:ri(c.image),alt:c.fullName,decoding:"async",loading:s<n2?"eager":"lazy",style:{width:"100%",height:"100%",borderRadius:"50%",objectFit:"cover",filter:t&&!d?"grayscale(100%)":"none"}}),d&&(0,_e.jsx)("span",{"aria-label":`Clear ${c.fullName} selection`,className:"tg-df-author-clear-badge",title:"Click again to clear selection",style:{alignItems:"center",backgroundColor:"#dc2626",border:"2px solid var(--tg-df-bg, #fff)",borderRadius:"50%",boxShadow:"0 1px 3px rgb(0 0 0 / 25%)",color:"#fff",display:"flex",fontSize:"15px",fontWeight:700,height:"20px",justifyContent:"center",lineHeight:1,position:"absolute",right:"-5px",top:"-5px",width:"20px",zIndex:1},children:(0,_e.jsx)("span",{"aria-hidden":"true",style:{display:"block",transform:"translateY(-1px)"},children:"\xD7"})}),f&&(0,_e.jsx)("img",{src:f,alt:"",className:"tg-df-author-brand-logo",decoding:"async",loading:"lazy",style:{position:"absolute",bottom:"-4px",right:"-4px",width:"24px",height:"24px",borderRadius:"50%",border:"2px solid var(--tg-df-bg, #fff)",backgroundColor:"#000",objectFit:"contain",filter:t&&!d?"grayscale(100%)":"none"}})]}),(0,_e.jsxs)("div",{style:{textAlign:"center"},children:[(0,_e.jsxs)("div",{className:"tg-df-author-row-name",style:{fontSize:"13px",fontWeight:700,color:"var(--tg-df-text)",lineHeight:"1.2"},children:[c.name,a&&d&&(0,_e.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading author products",style:{borderWidth:"2px",display:"inline-block",height:"11px",marginLeft:"4px",width:"11px"}})]}),c.role&&(0,_e.jsx)("div",{className:"tg-df-author-row-role",style:{fontSize:"11px",color:"var(--tg-df-text-muted)",lineHeight:"1.2",marginTop:"2px",display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis",wordBreak:"break-word"},children:c.role})]})]},c.handle)}):[1,2,3,4].map(c=>(0,_e.jsxs)("div",{className:"tg-df-author-row-item",style:{display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px"},children:[(0,_e.jsx)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px"},children:(0,_e.jsx)("div",{className:"tg-df-skeleton",style:{width:"100%",height:"100%",borderRadius:"50%"}})}),(0,_e.jsxs)("div",{style:{textAlign:"center",width:"100%"},children:[(0,_e.jsx)("div",{className:"tg-df-skeleton",style:{height:"12px",width:"80%",margin:"0 auto 4px auto",borderRadius:"2px"}}),(0,_e.jsx)("div",{className:"tg-df-skeleton",style:{height:"10px",width:"60%",margin:"0 auto",borderRadius:"2px"}})]})]},`author-skeleton-${c}`))})]})}var Ja=B(O(),1);function _0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,freeformTagCounts:i,freeformTags:r,allAuthorsList:o,brands:u,clickedAuthorOverride:c,loading:s,refreshing:f,onAuthorClick:d,onBrandToggle:m,onTagClick:v,onFreeformTagClick:A,overriddenAuthorHandle:b,overriddenAuthorName:h,selectedBrands:g,showAuthorRail:p,showAuthorCounters:y,showBrandRail:C,showCategoryRail:R,showFreeformTagRail:T,website:M}){let w=R!==!1&&l.length>0||T!==!1&&r.length>0||C!==!1&&(n.length>0||!!u?.length)||p&&o.length>0;return!(p||R!==!1||T!==!1||C!==!1)||!w&&!s?null:(0,Ja.jsxs)("div",{id:"tg-df-spreadsheet-filters",style:{display:"block",marginBottom:"16px"},children:[p&&(0,Ja.jsx)(M0,{authors:o,clickedAuthorOverride:c,loading:s&&o.length===0,refreshing:f,onAuthorClick:d,overriddenAuthorHandle:b,overriddenAuthorName:h,website:M}),R!==!1&&(0,Ja.jsx)(T0,{activeDealTag:e,airedaleTagCounts:a,airedaleTags:l,loading:s,refreshing:f,onTagClick:v,showAuthorCounters:y}),T!==!1&&(0,Ja.jsx)(D0,{activeFreeformTags:t,freeformTagCounts:i,freeformTags:r,loading:s,refreshing:f,onTagClick:A,showAuthorCounters:y}),C!==!1&&(0,Ja.jsx)(C0,{airedaleBrands:n,brands:u,loading:s,refreshing:f,onBrandToggle:m,selectedBrands:g,showAuthorCounters:y})]})}var O0=B(ft(),1);var B0=[{value:"date_desc",label:"Most recent"},{value:"rating_desc",label:"Highest rating"},{value:"scored_first",label:"Scored products first"}];function Or({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}){return!!(a&&e!==!0&&t===!1&&n===!1)}function Fu({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a,lightweightReviewDelivery:l,showPriceDiscountFilters:i,showReviewSort:r}){return!!(l&&i===!1&&r===!1&&Or({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}))}function ju(e=!0){return e?B0:B0.filter(t=>t.value!=="scored_first")}function wa(e,t=!0){return!t&&e==="scored_first"?"date_desc":e||"date_desc"}var H=B(O(),1),N0=[{value:"all",label:"All Prices",shortLabel:""},{value:"under50",label:"Under $50",shortLabel:"< $50"},{value:"50_100",label:"$50 - $100",shortLabel:"$50-$100"},{value:"100_200",label:"$100 - $200",shortLabel:"$100-$200"},{value:"200_500",label:"$200 - $500",shortLabel:"$200-$500"},{value:"over500",label:"Over $500",shortLabel:"> $500"}],a2=[{value:"0",label:"Any discount"},...[5,10,15,20,25,30,40,50,60,70].map(e=>({value:String(e),label:`Min ${e}% off`}))];function l2({open:e}){return(0,H.jsx)("svg",{"aria-hidden":"true",className:e?"is-open":void 0,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,H.jsx)("path",{d:"m6 9 6 6 6-6"})})}function Yn(){return(0,H.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,H.jsx)("polyline",{points:"20 6 9 17 4 12"})})}function k0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,brands:i,discountAmount:r,enabled:o,freeformTagCounts:u,freeformTags:c,includeScoredFirst:s,onBrandSelect:f,onBrandToggle:d,onDiscountAmountChange:m,onFreeformTagClear:v,onFreeformTagToggle:A,onPriceRangeChange:b,onReviewSortChange:h,onTagClear:g,onTagClick:p,priceRange:y,reviewSort:C,selectedBrands:R,showCounters:T,showBrandRail:M,showCategoryRail:w,showFreeformTagRail:D,showPriceDiscountFilters:k,showReviewSort:se}){let[I,j]=(0,O0.useState)(null);if(!o)return null;let He=l.map(x=>{let P=x.split(":::");return{count:a[x]||0,handle:P[0],label:P[1]||x}}),ze=n.length>0?n:i||[],St=He.find(x=>x.handle===e),Ie=y||"all",rn=!r||r==="all"?"0":r,Be=N0.find(x=>x.value===Ie),Je=k!==!1,nt=wa(C,s),X=ju(s),de=nt==="rating_desc"?"Highest rating":nt==="scored_first"?"Scored first":"Most recent",$e=x=>{j(P=>P===x?null:x)},Z=[];return w!==!1&&Z.push({active:!!e,label:`CATEGORIES${St?` (${St.label})`:""}`,menu:"categories"}),D!==!1&&Z.push({active:t.length>0,label:`KEYWORDS${t.length>0?` (${t.length})`:""}`,menu:"keywords"}),M!==!1&&Z.push({active:R.length>0,label:`BRANDS${R.length>0?` (${R.length})`:""}`,menu:"brands"}),Je&&Z.push({active:Ie!=="all",label:`PRICES${Be?.shortLabel?` (${Be.shortLabel})`:""}`,menu:"prices"}),(Je||se)&&Z.push({active:se?nt!=="date_desc":rn!=="0",label:se?`SORT REVIEWS (${de})`:`DISCOUNTS${rn!=="0"?` (${rn}%+)`:""}`,menu:se?"review-sort":"discounts"}),(0,H.jsxs)("div",{className:"tg-df-mobile-2x2-container",children:[(0,H.jsx)("div",{className:`tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--${Z.length%2===0?"even":"odd"}`,children:Z.map(x=>(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-grid-cell${x.active?" has-active-filter":""}${I===x.menu?" active":""}`,"aria-expanded":I===x.menu,onClick:()=>$e(x.menu),children:[(0,H.jsx)("span",{children:x.label}),(0,H.jsx)(l2,{open:I===x.menu})]},x.menu))}),w!==!1&&I==="categories"&&(0,H.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${e?"":" selected"}`,onClick:()=>{g(),j(null)},children:[(0,H.jsx)("span",{children:"All Categories"}),!e&&(0,H.jsx)(Yn,{})]}),He.map(x=>{let P=e===x.handle;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{p(x.handle),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P?(0,H.jsx)(Yn,{}):T!==!1?(0,H.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},x.handle)})]}),M!==!1&&I==="brands"&&(0,H.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${R.length===0?" selected":""}`,onClick:()=>f?.([]),children:[(0,H.jsx)("span",{children:"All Brands"}),R.length===0&&(0,H.jsx)(Yn,{})]}),ze.map(x=>{let P=x.formatted_value,Q=R.includes(P);return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${Q?" selected":""}`,onClick:()=>d?.(P),children:[(0,H.jsx)("span",{children:P}),Q?(0,H.jsx)(Yn,{}):T!==!1&&x.count?(0,H.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},P)})]}),D!==!1&&I==="keywords"&&(0,H.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${t.length===0?" selected":""}`,onClick:()=>{v(),j(null)},children:[(0,H.jsx)("span",{children:"All Keywords"}),t.length===0&&(0,H.jsx)(Yn,{})]}),c.map(x=>{let P=t.includes(x.handle);return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>A(x.handle),children:[(0,H.jsx)("span",{children:x.label}),P?(0,H.jsx)(Yn,{}):T!==!1&&u[x.handle]?(0,H.jsx)("span",{className:"tg-df-mobile-cell-badge",children:u[x.handle]}):null]},x.handle)})]}),I==="prices"&&(0,H.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:N0.map(x=>{let P=Ie===x.value;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{b?.(x.value),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P&&(0,H.jsx)(Yn,{})]},x.value)})}),I==="discounts"&&(0,H.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:a2.map(x=>{let P=rn===x.value;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{m?.(x.value),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P&&(0,H.jsx)(Yn,{})]},x.value)})}),I==="review-sort"&&(0,H.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:X.map(x=>{let P=nt===x.value;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{h?.(x.value),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P&&(0,H.jsx)(Yn,{})]},x.value)})})]})}var $a=B(ft(),1);var W=B(O(),1);function L0({airedaleBrands:e,airedaleTags:t,discountAmount:n,hidden:a,includeScoredFirst:l,onDiscountAmountChange:i,onPriceRangeChange:r,onReviewSortChange:o,priceRange:u,reviewSort:c,showReviewSort:s,showPriceDiscountFilters:f}){let d=(0,$a.useRef)(null),[m,v]=(0,$a.useState)(!1),[A,b]=(0,$a.useState)(!1),h=ju(l),g=wa(c,l),p=()=>{if(!d.current)return;let{scrollLeft:y,scrollWidth:C,clientWidth:R}=d.current;v(y>0),b(Math.ceil(y+R)<C-5)};return(0,$a.useEffect)(()=>(p(),window.addEventListener("resize",p),setTimeout(p,100),setTimeout(()=>{document.querySelector(".tg-df-categories-row")?.dispatchEvent(new Event("scroll")),document.querySelector(".tg-df-brands-row")?.dispatchEvent(new Event("scroll"))},150),()=>window.removeEventListener("resize",p)),[t,e]),(0,W.jsx)("div",{className:"tg-df-controls",id:"tg-df-controls",style:{display:a?"none":"flex",marginTop:"12px",marginBottom:"16px",justifyContent:"center"},children:(0,W.jsxs)("div",{className:"tg-df-filters-container",style:{position:"relative",width:"100%",maxWidth:"800px",margin:"0 auto"},children:[(0,W.jsx)("button",{className:"tg-df-scroll-btn left",style:{display:m?"flex":"none"},onClick:()=>d.current?.scrollBy({left:-200,behavior:"smooth"}),children:(0,W.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,W.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,W.jsx)("button",{className:"tg-df-scroll-btn right",style:{display:A?"flex":"none"},onClick:()=>d.current?.scrollBy({left:200,behavior:"smooth"}),children:(0,W.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,W.jsx)("path",{d:"M9 18l6-6-6-6"})})}),(0,W.jsxs)("div",{className:"tg-df-filters",ref:d,onScroll:p,children:[(0,W.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-legacy-price-wrapper",style:{display:f!==!1?"flex":"none"},children:[(0,W.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,W.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,W.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-price-filter","aria-label":"Filter Prices",value:u||"all",onChange:y=>r?.(y.target.value),children:[(0,W.jsx)("option",{value:"all",children:"All Prices"}),(0,W.jsx)("option",{value:"under50",children:"Under $50"}),(0,W.jsx)("option",{value:"50_100",children:"$50 - $100"}),(0,W.jsx)("option",{value:"100_200",children:"$100 - $200"}),(0,W.jsx)("option",{value:"200_500",children:"$200 - $500"}),(0,W.jsx)("option",{value:"over500",children:"Over $500"})]})]}),(0,W.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-discount-filter-wrapper",style:{display:f!==!1&&!s?"flex":"none"},children:[(0,W.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,W.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,W.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-discount-filter","aria-label":"Discount Amount",value:n||"all",onChange:y=>i?.(y.target.value),children:[(0,W.jsx)("option",{value:"all",children:"Any discount"}),[5,10,15,20,25,30,40,50,60,70].map(y=>(0,W.jsxs)("option",{value:y,children:["Min ",y,"%"]},y))]})]}),(0,W.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-review-sort-wrapper",style:{display:s?"flex":"none"},children:[(0,W.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,W.jsx)("path",{d:"M4 7h16M7 12h10m-7 5h4"})}),(0,W.jsx)("select",{className:"tg-df-filter-select",id:"tg-df-review-sort","aria-label":"Sort Reviews",value:g,onChange:y=>o?.(y.target.value),children:h.map(y=>(0,W.jsx)("option",{value:y.value,children:y.label},y.value))})]})]})]})})}var be=B(ft(),1);function kr(e,t){return e.filter(n=>{let a=n.handle.toLowerCase(),l=n.fullName.toLowerCase(),i=n.name.toLowerCase();return t.some(r=>{let o=r.articleauthorhandle||[],u=r.articleauthor||[],c=r.articleauthortext||[];return[...o,...u,...c].some(s=>{let f=String(s||"").toLowerCase();return f===a||f===l||f===i})})})}function Yu(e,t){return e.map((n,a)=>({index:a,profile:n,productCount:t[n.handle]||0})).sort((n,a)=>a.productCount-n.productCount||n.index-a.index).map(({profile:n})=>n)}function Vu(e,t){return e==="all-authors"||t==="all-authors"||t==="All authors"||!e&&!t}function Xu(e,t,n){let a=e;if((t||n)&&t!=="all-authors"&&n!=="all-authors"&&n!=="All authors"){if(t){let l=t.toLowerCase(),i=e.filter(r=>r.articleauthorhandle&&r.articleauthorhandle.some(o=>o.toLowerCase()===l));if(i.length>0)a=i;else if(n){let r=n.toLowerCase(),o=e.filter(u=>u.articleauthor&&u.articleauthor.some(c=>c.toLowerCase()===r));o.length>0&&(a=o)}}else if(n){let l=n.toLowerCase();a=e.filter(i=>i.articleauthor&&i.articleauthor.some(r=>r.toLowerCase()===l))}}return a}function sf(e,t,n){let a=0;if(t&&e.articleauthorhandle){let l=e.articleauthorhandle.findIndex(i=>i.toLowerCase()===t.toLowerCase());l>=0&&(a=l)}else if(n&&e.articleauthor){let l=e.articleauthor.findIndex(i=>i.toLowerCase()===n.toLowerCase());l>=0&&(a=l)}return a}function Qu(e,t,n){let a=sf(e,t,n),l=i=>typeof i=="string"?ee(i):i||"";return{authorName:e.articleauthortext?l(e.articleauthortext[a]):e.articleauthor?l(e.articleauthor[a]):"",authorRole:e.articleauthorrole?l(e.articleauthorrole[a]):"",authorImage:e.articleauthormedia?e.articleauthormedia[a]:""}}function Lr(e,t){let n=new Map;return e.forEach(a=>{if(!a.articleauthor)return;let l=t;if(a.documenturl)try{let f=new URL(a.documenturl).hostname.replace("www.","").split(".");f.length>0&&(l=f[0].toLowerCase())}catch{}let i=a.articleauthorhandle||[],r=a.articleauthor||[],o=a.articleauthortext||[],u=a.articleauthorrole||[],c=a.articleauthormedia||[];r.forEach((s,f)=>{if(!s||s==="null"||s.toLowerCase()==="all authors")return;let d=i[f]&&i[f]!=="null"?i[f]:s.toLowerCase().replace(/\s+/g,"-");if(!d||d==="null")return;let m=o[f]&&o[f]!=="null"?o[f]:s,v=u[f]&&u[f]!=="null"?u[f]:"",A=ee(String(m)),b=ee(String(v)),h=c[f]&&c[f]!=="null"?c[f]:"",g=A.split(" ")[0],p=_r(a,f,"short"),y=_r(a,f,"long"),C=Uu(a,f),R=n.get(d);!R&&A&&h?n.set(d,{...y?{bioLong:y}:{},...p?{bioShort:p}:{},name:g,fullName:A,handle:d,role:b,image:h,brandKey:l,...C.length>0?{socialNetworks:C}:{}}):R&&(!R.bioShort&&p&&(R.bioShort=p),!R.bioLong&&y&&(R.bioLong=y),!R.socialNetworks?.length&&C.length>0&&(R.socialNetworks=C))})}),Array.from(n.values())}var E=B(O(),1);function z0(e){let t=(0,be.useRef)(""),n=(0,be.useRef)(null),a=(0,be.useCallback)(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),l=(0,be.useCallback)(r=>{a(),t.current=r},[a]),i=(0,be.useCallback)((r,o,u=!1)=>{if(!e)return;if(r===t.current){a();return}let c=()=>{n.current=null,t.current=r,e(o)};a(),u?c():n.current=window.setTimeout(c,350)},[a,e]);return(0,be.useEffect)(()=>a,[a]),{save:i,synchronise:l}}function H0({contentKey:e,defaultText:t,kind:n,onChange:a,value:l}){let i=(0,be.useRef)(null),r=(0,be.useRef)(e),[o,u]=(0,be.useState)(!1),c=l??t,s=!!a,{save:f,synchronise:d}=z0(a);(0,be.useLayoutEffect)(()=>{let g=r.current!==e;i.current&&(g||document.activeElement!==i.current)&&(i.current.innerHTML!==c&&(i.current.innerHTML=c),d(c)),r.current=e},[e,d,c]);let m=(g=!1)=>{if(!i.current)return;let p=i.current.innerHTML;f(p,p===t?void 0:p,g)},v=(g,p)=>{document.execCommand(g,!1,p),m(!0)},A=n==="kicker"?{fontSize:"0.875rem",color:"#6B7280",fontStyle:"normal",margin:"0 0 0.25rem 0"}:{fontSize:"2.25rem",fontWeight:300,color:"#111827",margin:"0 0 0.25rem 0",lineHeight:1.1,letterSpacing:"-0.02em"},b=n==="kicker"?"tg-df-author-curated-by tg-df-author-kicker":"tg-df-author-name",h=()=>n==="kicker"?(0,E.jsx)("p",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}}):(0,E.jsx)("h2",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}});return s?(0,E.jsxs)("div",{className:"tg-df-author-header-text-shell",style:{position:"relative"},children:[o&&(0,E.jsxs)("div",{className:"tg-df-author-header-text-toolbar",role:"toolbar","aria-label":`${n==="kicker"?"Shop by text":"Site or author name"} formatting`,style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"0.25rem",margin:"0 auto 0.375rem",width:"fit-content",padding:"0.25rem 0.5rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",fontSize:"11px",zIndex:10},children:[(0,E.jsx)("span",{style:{color:"#64748b",padding:"2px 2px 2px 0"},children:"Editing"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("bold"),title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("italic"),title:"Italic",children:(0,E.jsx)("em",{children:"I"})}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{let g=prompt("Enter URL:");g&&v("createLink",g)},title:"Add link",children:"\u{1F517}"}),l!==void 0&&(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{i.current&&(i.current.innerHTML=t),d(t),a?.(void 0)},title:"Restore default",children:"Reset"})]}),h()]}):h()}function i2({contentKey:e,initialBio:t,defaultPlaceholder:n,onBioChange:a,stabilizeHeight:l=!1}){let r=(0,be.useRef)(null),o=(0,be.useRef)(e),u=(0,be.useRef)(n),c=(0,be.useRef)(!1),[s,f]=(0,be.useState)(!1),[d,m]=(0,be.useState)(!1),[v,A]=(0,be.useState)(!1),b=t||n,h=l&&b.replace(/<[^>]*>/g,"").trim().length>240,g=!!a,{save:p,synchronise:y}=z0(a);(0,be.useLayoutEffect)(()=>{let w=o.current!==e,D=u.current!==n;w&&(c.current=!1);let k=!t&&D&&!c.current;r.current&&(w||document.activeElement!==r.current||k)&&(r.current.innerHTML!==b&&(r.current.innerHTML=b),y(b)),o.current=e,u.current=n},[b,e,n,t,y]),(0,be.useLayoutEffect)(()=>{m(!1)},[e]),(0,be.useLayoutEffect)(()=>{if(!h||!r.current){A(!1);return}let w=r.current,D=()=>{A(w.scrollHeight>w.clientHeight+1)};if(D(),typeof ResizeObserver>"u")return;let k=new ResizeObserver(D);return k.observe(w),()=>k.disconnect()},[b,e,d,h]);let C=(w,D=null)=>{if(c.current=!0,document.execCommand(w,!1,D||void 0),r.current){let k=r.current.innerHTML;p(k,k===n?"":k,!0)}},R=(w=!1)=>{if(!r.current)return;let D=r.current.innerHTML;p(D,D===n?"":D,w)};return(0,E.jsxs)("div",{style:{position:"relative",maxWidth:"42rem",margin:"0 auto 0.5rem auto",padding:"0.25rem 0.5rem"},className:`tg-df-author-bio-shell${l?" tg-df-author-bio-shell--stable":""}`,children:[g&&s&&(0,E.jsxs)("div",{role:"toolbar","aria-label":"Introduction text formatting",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"0.375rem",marginBottom:"0.5rem",padding:"0.25rem 0.625rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",width:"fit-content",margin:"0 auto 0.5rem auto",fontSize:"12px",userSelect:"none",zIndex:10},children:[(0,E.jsx)("span",{style:{fontSize:"11px",color:"#64748b",fontWeight:500,marginRight:"2px"},children:"Editing \u2014 saves when you click away"}),(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:()=>C("bold"),style:{fontWeight:"bold",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:()=>C("italic"),style:{fontStyle:"italic",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Italic",children:"I"}),(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:()=>{let w=prompt("Enter URL:");w&&C("createLink",w)},style:{padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Add Link",children:"\u{1F517}"}),t&&(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:w=>{w.preventDefault(),w.stopPropagation(),r.current&&(r.current.innerHTML=n),c.current=!1,y(n),a&&a("")},style:{fontSize:"10px",padding:"2px 8px",borderRadius:"4px",background:"#fee2e2",color:"#991b1b",cursor:"pointer",border:"1px solid #fca5a5"},title:"Reset Bio",children:"Reset"})]}),(0,E.jsx)("div",{ref:r,contentEditable:g?!0:void 0,suppressContentEditableWarning:g,onFocus:g?()=>{f(!0)}:void 0,onBlur:g?()=>{f(!1),R(!0),c.current=!1}:void 0,onInput:g?()=>{c.current=!0}:void 0,className:`tg-df-author-bio ${g?"wysiwyg-bio-editable":"tg-df-author-bio--static"}${h?d?" tg-df-author-bio--expanded":" tg-df-author-bio--clamped":""}`,style:{color:"#4b5563",lineHeight:1.6,fontWeight:300,fontSize:"0.9375rem",textAlign:"center",outline:g&&s?"2px solid #3b82f6":"none",borderRadius:"6px",padding:"0.375rem 0.5rem",cursor:g?"text":"default",transition:"all 0.15s ease-in-out"}}),h?(0,E.jsx)("div",{className:"tg-df-author-bio-toggle-slot",children:(0,E.jsx)("button",{type:"button",className:"tg-df-author-bio-toggle","aria-expanded":d,onClick:()=>m(w=>!w),style:{visibility:v||d?"visible":"hidden"},children:d?"Show less":"Read more"})}):null]})}function r2(e){let t=(e||"").toLowerCase();return t==="linkedin"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.28 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.75M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"})}):t==="twitter"||t==="x"?(0,E.jsx)("svg",{className:"icon-svg",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,E.jsx)("path",{fill:"currentColor",d:"M18 2h4l-8 9 9 11h-7l-5-7-6 7H2l7-9L1 2h7l5 6zm-1 18h2L7 4H5z"})}):t==="email"||t==="mail"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}),(0,E.jsx)("path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"})]}):t==="instagram"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"5",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"12",cy:"12",r:"4.25",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"17.4",cy:"6.7",r:"1.25",fill:"currentColor"})]}):t==="steam"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("circle",{fill:"#0f1618",cx:"12",cy:"12",r:"12"}),(0,E.jsx)("path",{d:"m18.22 8.9a2.269 2.269 0 1 1 -2.27-2.265 2.267 2.267 0 0 1 2.27 2.265zm2.258.005a4.534 4.534 0 0 1 -4.533 4.526h-.1l-4.087 2.911v.161a3.4 3.4 0 0 1 -6.74.669l-4.549-1.879c-.032-.109-.057-.219-.085-.329a11.973 11.973 0 0 1 -.384-2.964c0-.214.02-.423.032-.635 0-.1.008-.206.016-.308l6.394 2.643a3.385 3.385 0 0 1 1.915-.591c.065 0 .127 0 .191.005l2.865-4.145v-.062a4.533 4.533 0 0 1 9.066 0zm-9.763 6.618a2.55 2.55 0 0 0 -3.262-1.411l1.525.63a1.877 1.877 0 1 1 -1.446 3.464l-1.475-.606a2.529 2.529 0 0 0 1.315 1.25 2.559 2.559 0 0 0 3.339-1.374 2.526 2.526 0 0 0 .004-1.951zm8.251-6.618a3.021 3.021 0 1 0 -3.021 3.015 3.022 3.022 0 0 0 3.021-3.013z",fill:"#fff"})]}):t==="youtube"?(0,E.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"})}):t==="twitch"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("path",{d:"m24 12a12 12 0 1 1 -12-12 12 12 0 0 1 12 12z",fill:"#111"}),(0,E.jsx)("path",{d:"m12.308 17.167-1.833 1.833h-1.818v-1.833h-3.357v-9.733l.925-2.434h12.475v8.517l-3.648 3.65zm5.175-10.95h-10.043v8.824h2.743v1.833l1.817-1.833h3.342l2.14-2.126zm-5.483 6.083v-3.65h-1.218v3.65zm3.342 0v-3.65h-1.216v3.65z",fill:"#fff"})]}):t==="facebook"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m13.079 19h-2.9v-7h-1.441v-2.408h1.442v-1.456c0-1.96.813-3.136 3.136-3.136h1.933v2.408h-1.2c-.91 0-.965.35-.965.966v1.218h2.183l-.257 2.408h-1.931z",fill:"currentColor"})}):t==="pinterest"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.336 5c-3.822 0-5.754 2.744-5.754 5.025a3.065 3.065 0 0 0 1.652 3.066.279.279 0 0 0 .407-.2l.154-.644a.373.373 0 0 0-.113-.448 2.341 2.341 0 0 1-.532-1.582 3.812 3.812 0 0 1 3.961-3.849 3.009 3.009 0 0 1 3.346 3.08c0 2.323-1.022 4.283-2.547 4.283a1.253 1.253 0 0 1-1.273-1.554 17.616 17.616 0 0 0 .713-2.856 1.081 1.081 0 0 0-1.092-1.2c-.854 0-1.553.881-1.553 2.071a2.954 2.954 0 0 0 .266 1.274l-1.038 4.383a9.389 9.389 0 0 0-.027 3.065.109.109 0 0 0 .2.042 8.737 8.737 0 0 0 1.457-2.631l.561-2.212a2.3 2.3 0 0 0 1.959 1.008c2.59 0 4.34-2.366 4.34-5.516a4.8 4.8 0 0 0-5.087-4.605z",fill:"currentColor"})}):t==="substack"?(0,E.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z"})}):t==="threads"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12.186 24h-.007c-3.582-.024-6.332-1.22-8.173-3.555C2.26 18.212 1.5 15.228 1.5 11.83 1.5 8.16 2.673 5.097 4.902 2.935 7.026.877 10.02 0 13.565 0c3.784 0 6.81 1.028 8.995 3.056 2.008 1.862 3.013 4.417 2.91 7.391-.122 3.518-1.57 6.136-4.304 7.781-1.892 1.138-4.103 1.62-6.57 1.433-.122.392-.266.769-.434 1.127-.514 1.096-1.18 1.96-1.982 2.569-.884.67-1.933 1.01-3.118 1.01-1.34 0-2.42-.42-3.21-1.248-.78-.82-1.17-1.89-1.17-3.18 0-1.512.52-2.73 1.545-3.62 1.018-.883 2.45-1.33 4.258-1.33.56 0 1.11.04 1.63.12-.04-.53-.13-1.02-.27-1.46-.26-.81-.71-1.45-1.34-1.92-.62-.47-1.42-.71-2.38-.71-1.09 0-2.02.29-2.77.87-.29.22-.68.17-.9-.12l-.76-1.03c-.22-.3-.16-.71.13-.93C7.43 5.37 8.95 4.9 10.8 4.9c1.64 0 2.99.41 4.02 1.22 1.04.81 1.73 1.93 2.06 3.33.15.65.25 1.42.3 2.31 1.68-.31 3.05-1.05 4.08-2.2 1.01-1.13 1.52-2.58 1.52-4.31 0-2.43-.84-4.32-2.5-5.62C18.63 1.32 16.32.5 13.56.5c-3.03 0-5.54.73-7.27 2.21C4.48 4.27 3.5 6.78 3.5 10c0 3.1.66 5.62 1.96 7.49 1.34 1.93 3.38 2.92 6.07 2.95 1.76.02 3.32-.34 4.64-1.07.28-.15.63-.05.78.22l.55.98c.15.28.05.63-.22.78-1.63.9-3.55 1.35-5.7 1.35z"})}):t==="tiktok"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.308 5.012c.763-.012 1.522 0 2.281-.012a3.636 3.636 0 0 0 1.02 2.434 4.12 4.12 0 0 0 2.473 1.043v2.349a6.177 6.177 0 0 1-2.449-.564 7.207 7.207 0 0 1-.947-.543c0 1.705.008 3.406-.01 5.105a4.442 4.442 0 0 1-.789 2.3 4.343 4.343 0 0 1-3.448 1.872 4.254 4.254 0 0 1-2.379-.6 4.393 4.393 0 0 1-2.127-3.331c-.014-.292-.019-.584-.007-.868a4.395 4.395 0 0 1 5.091-3.9c.013.864-.021 1.727-.021 2.591a2.007 2.007 0 0 0-2.558 1.237 2.316 2.316 0 0 0-.079.939 1.992 1.992 0 0 0 3.658.736 1.39 1.39 0 0 0 .239-.62c.057-1.043.034-2.082.041-3.126.006-2.351-.007-4.7.011-7.041z",fill:"currentColor"})}):t==="bluesky"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.879.139 2.588-.02 3.868.002 5.03c.08 4.201 1.84 10.024 3.931 12.397 2.091 2.373 4.545 1.573 5.467.927.817-.573 1.564-1.611 2.6-2.92 1.036 1.309 1.783 2.347 2.6 2.92.922.646 3.376 1.446 5.467-.927 2.091-2.373 3.851-8.196 3.931-12.397.022-1.162-.137-2.442-.9-3.151-.659-.613-1.664-.935-4.3-1.074C16.046 4.747 13.087 8.686 12 10.8z"})}):t==="github"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"})}):t==="rss"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("path",{d:"M4 11a9 9 0 0 1 9 9"}),(0,E.jsx)("path",{d:"M4 4a16 16 0 0 1 16 16"}),(0,E.jsx)("circle",{cx:"5",cy:"19",r:"1"})]}):(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,E.jsx)("path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"}),(0,E.jsx)("path",{d:"M2 12h20"})]})}function U0({authorCount:e=0,authorArticlesList:t,authorBioLength:n,customBio:a,customHeaderKicker:l,customHeaderTitle:i,effectiveAuthorHandle:r,effectiveAuthorName:o,isReviewWidget:u=!1,onBioChange:c,onHeaderKickerChange:s,onHeaderTitleChange:f,selectedProfile:d,showAuthorBio:m=!0,showAuthorIdentity:v=!0,showSocialButtons:A=!0,stabilizeBio:b=!1,totalDealCount:h=0,website:g}){let p=Vu(r,o),y=g||"tomsguide",C=Gu[y]||y,R=Nr[y],T=r?.toLowerCase(),M=o?.toLowerCase(),w=t.find(Be=>T&&Be.articleauthorhandle?.some(Je=>Je?.toLowerCase()===T)||M&&Be.articleauthor?.some(Je=>Je?.toLowerCase()===M))||null,D=w?sf(w,r,o):0,k=d?.image||(w?c0(w,D):""),se=d?n==="short"?d.bioShort||"":d.bioLong||d.bioShort||"":w?_r(w,D,n):"",I=p?`Our team is dedicated to researching, reviewing and recommending the latest and best products in all the categories that matter to you. Below you can shop the latest ${h} ${u?"review ":""}recommendations from ${e} ${C} ${u?"editor tests":"editors"}.`:se||`Handpicked deals and recommendations curated by ${o||"our expert editorial team"}.`,j=d?.role||"",He=p?y0[y]||[]:d?.socialNetworks||[];!p&&w&&(j||(j=u0(w,D)),He.length===0&&(He=Uu(w,D)));let ze=d?.fullName||o||"Author Name",St=p?`site:${y}`:`author:${d?.handle||r||ze}`,Ie=A&&He.length>0,rn=!p&&!!j||Ie;return(0,E.jsxs)("div",{className:"tg-df-author-card",style:{textAlign:"center",padding:"1.75rem 1rem 0.25rem 1rem",margin:"0 auto",maxWidth:"48rem"},children:[v&&(p?(0,E.jsx)("div",{className:"tg-df-author-media-slot tg-df-author-image-container",style:{margin:"0 auto 0.75rem auto",textAlign:"center",minHeight:"180px",display:"flex",alignItems:"center",justifyContent:"center"},children:R?(0,E.jsx)("img",{src:R,alt:C,className:"tg-df-site-logo",style:{maxHeight:"150px",maxWidth:"520px",objectFit:"contain",margin:"0 auto",display:"block"}}):(0,E.jsx)("div",{style:{fontSize:"1.75rem",fontWeight:700,color:"#111827"},children:C})}):(0,E.jsx)("div",{className:"tg-df-author-media-slot",children:(0,E.jsxs)("div",{className:"tg-df-author-profile-image-wrapper",children:[k?(0,E.jsx)("img",{src:ri(k),alt:ze,className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",objectFit:"cover",display:"block"}}):(0,E.jsx)("div",{className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",background:"#e2e8f0",display:"block"}}),R?(0,E.jsx)("img",{src:R,alt:"",className:"tg-df-author-profile-brand-logo"}):null]})})),v&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(H0,{contentKey:`${St}:kicker`,defaultText:u?"Reviews shop by":"Shop by",kind:"kicker",onChange:s,value:l}),(0,E.jsx)(H0,{contentKey:`${St}:title`,defaultText:p?C:ze,kind:"title",onChange:f,value:i}),rn&&(0,E.jsxs)("div",{className:`tg-df-author-meta-slot${p?" tg-df-author-meta-slot--site":""}${Ie?"":" tg-df-author-meta-slot--no-social"}`,children:[!p&&j?(0,E.jsx)("div",{className:"tg-df-author-role",id:"tg-df-author-role-display",style:{fontSize:"0.9375rem",fontWeight:500,color:"var(--tg-df-blue, #1F69FF)",margin:"0 0 0.5rem 0",lineHeight:1.3},children:j}):null,Ie?(0,E.jsx)("div",{className:"tg-df-author-social-links",children:He.map(Be=>(0,E.jsx)("a",{href:Be.href,target:"_blank",rel:"noopener noreferrer",title:Be.label,"aria-label":Be.label,className:"tg-df-author-social-btn","data-social-key":Be.key.toLowerCase(),children:r2(Be.key)},Be.key))}):null]})]}),m&&(0,E.jsx)(i2,{contentKey:St,initialBio:a,defaultPlaceholder:I,onBioChange:c,stabilizeHeight:b})]})}var te=B(O(),1);function df(e){if(!e||typeof e!="object")return"";if(e.type==="voucher_code"&&e.display_value)return e.display_value;let t=Array.isArray(e)?e:Object.keys(e).filter(n=>Object.prototype.hasOwnProperty.call(e,n)).map(n=>e[n]);for(let n of t){let a=df(n);if(a)return a}return""}function o2({endTime:e}){if(!e)return null;let t=e;!isNaN(Number(t))&&String(t).length===10&&(t=Number(t)*1e3);let n=new Date(t),a=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"});return(0,te.jsxs)("span",{className:"tg-df-voucher-expiry",children:[(0,te.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginRight:"4px"},children:[(0,te.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,te.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),"Expires ",a.format(n)]})}function G0({error:e,loading:t,merchant:n,onClose:a,vouchers:l}){return(0,te.jsx)("div",{className:`tg-df-modal-backdrop ${n?"active":""}`,onClick:i=>{i.target===i.currentTarget&&a()},children:(0,te.jsxs)("div",{className:"tg-df-modal",children:[(0,te.jsxs)("div",{className:"tg-df-modal-header",children:[(0,te.jsx)("h3",{className:"tg-df-modal-title",children:n?`${n} Coupons & Deals`:"Available Coupons & Deals"}),(0,te.jsx)("button",{className:"tg-df-modal-close",onClick:a,children:(0,te.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,te.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,te.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),(0,te.jsx)("div",{className:"tg-df-modal-body",children:t?(0,te.jsx)("div",{className:"tg-df-message",children:(0,te.jsx)("div",{className:"tg-df-coupon-spinner",style:{width:"24px",height:"24px",borderColor:"#ccc",borderTopColor:"#3b82f6"}})}):e?(0,te.jsx)("div",{className:"tg-df-message",children:"Failed to load vouchers."}):l.length===0?(0,te.jsxs)("div",{className:"tg-df-message",children:["No active vouchers found for ",n,"."]}):l.map((i,r)=>{let o=i.offer?.name||i.offer?.title||i.name||i.title||i.model_name||"Voucher",u=i.offer?.link||i.offer?.url||i.link||i.url||"#",c=i.merchant,s=Array.isArray(c)?c[0]?.logo_url||"":c?.logo_url||"",f=df(i.offer)||df(i)||i.offer?.voucher_code||i.voucher_code||"",d=i.offer?.end_time||i.end_time||"";return(0,te.jsxs)("a",{href:u,target:"_blank",rel:"noopener nofollow",className:"tg-df-voucher-item",children:[s?(0,te.jsx)("img",{src:s,alt:"Logo",className:"tg-df-voucher-logo"}):(0,te.jsx)("div",{className:"tg-df-voucher-logo",style:{background:"#e2e8f0"}}),(0,te.jsxs)("div",{className:"tg-df-voucher-content",children:[(0,te.jsx)("h4",{className:"tg-df-voucher-title",children:o}),(0,te.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px",marginTop:"8px"},children:[f&&(0,te.jsxs)("span",{className:"tg-df-voucher-code",title:"Copy to clipboard",onClick:m=>{m.preventDefault(),m.stopPropagation();let v=m.currentTarget;navigator.clipboard.writeText(f).then(()=>{v.classList.add("copied");let A=v.querySelector(".tg-df-voucher-code-text"),b=v.querySelector(".tg-df-voucher-copy-icon"),h=A.innerText,g=b.innerHTML;A.innerText="Copied!",b.innerHTML='<polyline points="20 6 9 17 4 12"><\/polyline>',setTimeout(()=>{v.classList.remove("copied"),A&&(A.innerText=h),b&&(b.innerHTML=g)},2e3)})},children:[(0,te.jsx)("span",{className:"tg-df-voucher-code-text",children:f}),(0,te.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:"6px",flexShrink:0},className:"tg-df-voucher-copy-icon",children:[(0,te.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,te.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})]}),d&&(0,te.jsx)(o2,{endTime:d})]})]})]},r)})})]})})}var N=B(ft(),1);function ci(e){if(!e||!e.articlepage)return[];try{let t=e.articlepage;if(!Array.isArray(t))return typeof t=="string"?JSON.parse(t):t;if(t.length===0)return[];let n=t[0];return typeof n=="string"?JSON.parse(n):Array.isArray(n)?n:n&&typeof n=="object"&&"type"in n?t:n}catch{return[]}}function si(e,t=!1,{includeCollections:n=!0,includeDeals:a=!0}={}){let l=t?e.filter(r=>r.type==="buying-guide"):[];if(l.length>0)return l;let i=e.filter(r=>r.type==="deal"||r.type==="featured-product");return a&&!n&&!t?i.filter(r=>r.type==="deal"):i}function di(e,t){if(!t||t.length===0)return!0;let n=e&&(e.brand||e.retailer)||"";if(!n)return!1;let a=n.replace(/^\d+\.\s*/,"").trim().toLowerCase();return t.some(l=>{let i=l.trim().toLowerCase();return a===i||a.startsWith(`${i} `)||a.includes(i)||i.includes(a)})}function wt(e){return!e||e==="auto"?"US":e}function an(e){return e==="GB"||e==="UK"?"GBP":e==="AU"?"AUD":e==="CA"?"CAD":["DE","FR","IT","ES","NL"].includes(e)?"EUR":"USD"}function P0(e,t){if(e.isBuyingGuideProduct||e.isReviewProduct)return!0;if(t==="unavailable")return!1;let n=String(e.isoCurrency||e.currency||"").trim().toUpperCase();return({$:"USD",A$:"AUD",CA$:"CAD","\xA3":"GBP","\u20AC":"EUR"}[n]||n)===an(t)}function fi(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=a?n.currency||(n.price&&typeof n.price=="object"?n.price.currency:""):l.currency||(typeof l=="string"?l:"")||n.currency||"";!i&&n.variants&&n.variants.length>0&&(i=n.variants[0].currency||"");let r="$",o="USD",u=(i||"").toString().toUpperCase().trim();return u==="GBP"||u==="\xA3"||u.includes("POUND")||u.includes("163")?(r="\xA3",o="GBP"):u==="EUR"||u==="\u20AC"||u.includes("EURO")||u.includes("8364")?(r="\u20AC",o="EUR"):u==="AUD"||u==="A$"?(r="A$",o="AUD"):u==="CAD"||u==="CA$"?(r="CA$",o="CAD"):u==="USD"||u==="$"||u.includes("DOLLAR")||u.includes("36")?(r="$",o="USD"):(o=an(t),o==="GBP"?r="\xA3":o==="AUD"?r="A$":o==="CAD"?r="CA$":o==="EUR"&&(r="\u20AC")),{isoCurr:o,currencyStr:r}}function Ku(e){let t=e.data||{},n=e.type==="featured-product",a=t.price||{},l=0,i=0;return n?(l=typeof a=="number"?a:a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):t.msrp?parseFloat(t.msrp):0):(l=a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):0),{rawPrice:l,rawMsrp:i}}function Sa(e,t){if(!t||t==="all"||e<=0)return!0;if(t==="under50"&&e>=50||t==="over50"&&e<=50||t==="over30"&&e<=30||t==="over500"&&e<=500)return!1;if(t.includes("_")){let[n,a]=t.split("_").map(Number);if(n&&e<n||a&&e>a)return!1}return!0}function Ca(e,t,n){if(!n||n==="0"||n==="all")return!0;let a=parseInt(n);return!(!isNaN(a)&&a>0&&(!t||t<=e||Math.round((1-e/t)*100)<a))}var Zu=[0,50,100,150,200,250,300,350,400,450],ff={parameter:"articleControlTag",value:"type_buying_guide"},u2={includeAllContent:!1,pageStarts:Zu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"}]},c2={pcgamer:{includeAllContent:!1,pageStarts:Zu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["deals","type_deal","channel_gaming_hardware"]}],buyingGuideScopes:[ff]},homesandgardens:{includeAllContent:!1,pageStarts:Zu,scopes:[{parameter:"articleType",value:"collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"sig-product-collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"van-hawk-collection-widget",inventoryKind:"collections"},{parameter:"articleControlTag",value:"shopping",requiredArticleType:"news",inventoryKind:"collections"},{parameter:"articleType",value:"deals",inventoryKind:"deals"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["shopping","type_deal"],inventoryKind:"deals"}],buyingGuideScopes:[{parameter:"articleType",value:"buying guide"},ff]},whowhatwear:{includeAllContent:!0,pageStarts:Zu,scopes:[{}]}};function Wu(e,{includeBuyingGuideProducts:t=!1,includeCollections:n=!0,includeDeals:a=!0}={}){let l=c2[e]||u2;if(l.includeAllContent)return l;let i=l.scopes.filter(r=>r.inventoryKind==="collections"?n:r.inventoryKind==="deals"?a:r.value==="sig-product-collection"?n:a);return t?{...l,scopes:[...i,...l.buyingGuideScopes||[ff]]}:{...l,scopes:i}}function gf(e){if(Array.isArray(e))return e;let t=e.data;return t&&Array.isArray(t)?t:[]}function q0(e){let t=new Set;return e.filter(n=>{let a=n.id||n.articleid||n.url;return!a||t.has(a)?!1:(t.add(a),!0)})}function Zt(e){return typeof e.articletype=="string"?e.articletype.toLowerCase():Array.isArray(e.articletype)&&e.articletype.length>0?e.articletype[0].toLowerCase():""}function Hr(e){return String(e||"").toLowerCase().replace(/[^a-z0-9]/g,"")}function mf(e){return[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]].map(Hr)}function s2(e){return Zt(e)==="review"&&mf(e).some(t=>t.includes("channelgaminghardware"))}function F0(e,t,n){let a=Zt(e),l=mf(e),i=c=>l.some(s=>s.includes(c)),r=a==="news"&&i("shopping")&&i("deal")&&i("typedeal"),o=a==="deals"||r,u=a==="collection"||i("sigproductcollection")||i("vanhawkcollectionwidget")||a==="news"&&i("shopping")&&!r||a==="idea"&&i("shopping")&&(i("sigproductcollection")||i("vanhawkcollectionwidget"));return t&&o||n&&u}function el(e,t=!0,n=!0,a){if(a==="homesandgardens")return F0(e,t,n);let l=Zt(e),i=mf(e),r=l==="deals"||i.some(u=>u.includes("typedeal")),o=i.some(u=>u.includes("sigproductcollection"));return t&&r||n&&o}function j0(e,t,n=!1,a=!1,l=!0,i=!0){if(a&&Zt(e)==="review")return t!=="pcgamer"||s2(e);if(t==="homesandgardens")return Zt(e)==="buying guide"?n:F0(e,i,l);let r=Wu(t,{includeBuyingGuideProducts:n,includeCollections:l,includeDeals:i});if(r.includeAllContent)return i&&l?!0:n||el(e,i,l);let o=Zt(e),u=[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]],c=f=>!f.requiredArticleType||o===f.requiredArticleType.toLowerCase(),s=f=>!f.requiredControlTags||f.requiredControlTags.every(d=>u.some(m=>typeof m=="string"&&Hr(m).includes(Hr(d))));return r.scopes.some(f=>!c(f)||!s(f)?!1:f.parameter==="articleType"?o===f.value.toLowerCase():f.parameter==="articleControlTag"?u.some(d=>typeof d=="string"&&Hr(d).includes(Hr(f.value))):!1)}function hf(e,t){let n=e.map(a=>({...a}));return t.filter(a=>(a.isBuyingGuideProduct||a.isReviewProduct)&&a.brand).forEach(a=>{let l=String(a.brand).trim();if(!l)return;let i=n.find(r=>r.formatted_value.toLowerCase()===l.toLowerCase());i?i.count++:n.push({formatted_value:l,count:1})}),n.sort((a,l)=>l.count-a.count)}function Iu(e,t){let n={};return e.forEach(a=>{if(!a.articlepage)return;let l=ci(a),i=si(l,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});(t.includeDeals===!1||t.includeCollections===!1)&&!i.some(r=>r.type==="buying-guide")&&!el(a,t.includeDeals,t.includeCollections,t.website)||i.forEach(r=>{if(fi(r,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:o,rawMsrp:u}=Ku(r);if(!Sa(o,t.priceRange)||!Ca(o,u,t.discountAmount))return;let c=r.data||{},s=c.brand||c.retailer;if(!s)return;let f=s.replace(/^\d+\.\s*/,"").trim(),d=f.toLowerCase(),m=Object.keys(n).find(v=>v.toLowerCase()===d);m?n[m]++:(f===f.toLowerCase()&&(f=f.replace(/\b\w/g,v=>v.toUpperCase())),n[f]=1)})}),Object.keys(n).map(a=>({formatted_value:a,count:n[a]})).sort((a,l)=>l.count-a.count)}function d2(e){return String(e||"").trim().toLowerCase()}function Ju(e){return(Array.isArray(e)?e:[e]).map(d2).filter(Boolean)}function pf(e){let t=Ju(e.articletype),n=[...Ju(e.articlecontroltag),...Ju(e.articletagtypetaghandle)];return t.includes("deals")||n.some(a=>a.replace(/[\s-]+/g,"_")==="type_deal")}function V0(e){let t=Array.isArray(e)?e[0]:e,n=new Date(String(t||"")).getTime();return Number.isFinite(n)?n:null}function f2(e){for(let t of[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]){let n=V0(t);if(n!==null)return n}return null}function g2(e){for(let t of[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]){let n=V0(t);if(n!==null)return n}return null}function Y0(e){return Ju(e.articletype).includes("review")}function yf(e,t=new Date,n=0){let a=pf(e)?1:Y0(e)?36:n;if(a<=0)return!0;let l=Y0(e)?g2(e):f2(e);if(l===null)return!0;let i=new Date(t);return i.setMonth(i.getMonth()-a),l>=i.getTime()}function tl(e,t,n=0){return e.filter(a=>yf(a,t,n))}var m2=15;function Q0(e){return Array.isArray(e.articlemedia)?e.articlemedia[0]:""}function zr(e){return Array.isArray(e.documenturl)?e.documenturl[0]:e.documenturl||""}function h2(e){return kt(String(e||"").replace(/^\d+\.\s*/,"").trim())}function tt(e){return Array.isArray(e)?e.map(tt).find(Boolean)||"":typeof e=="string"||typeof e=="number"?String(e).trim():""}function vf(e,t=!1){return(t?[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]:[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]).map(tt).find(Boolean)||""}function p2(e,t,n){let a=tt(e).match(/^\s*(\d+)\s*[.)]\s*/)?.[1];return a||[t.rank,t.position,t.number,t.productNumber,t.product_number].map(tt).map(i=>i.match(/^\s*(\d+)\s*$/)?.[1]||"").find(Boolean)||String(n+1)}function y2(e){let t=tt(e);try{t=new URL(t).pathname}catch{}return t=t.split(/[?#]/)[0].split("/").filter(Boolean).at(-1)||"",t.split(/[-_]+/).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function v2(e){return tt(e.documenthandle)||tt(e.document_handle)||zr(e)||tt(e.documentname)||tt(e.documentnametext)}function b2(e,t){if(!t)return"";let n=t.length>m2?"Ranked":t;return`#${e} ${n}`}function A2(e){if(typeof e=="object"&&e)return String(e["data-model-name"]||"");try{return String(JSON.parse(String(e||""))["data-model-name"]||"")}catch{return""}}function w2(e){let t=e.brand||e.productBrand||e.manufacturer||e.maker||"";return typeof t=="string"?kt(t.replace(/^\d+\.\s*/,"").trim()):""}function S2(e){let t=e.price&&typeof e.price=="object"?e.price:{},n=Number(t.salePrice||t.price||e.salePrice||e.current_price||(typeof e.price=="number"?e.price:0)),a=Number(t.wasPrice||t.msrp||e.was_price||e.msrp||0),l=e.url||e.link?.url||e.link?.href||"";return{currency:t.currency||e.currency||"",rawMsrp:Number.isFinite(a)?a:0,rawPrice:Number.isFinite(n)?n:0,url:l}}function bf(e){let t=e?.review||{},n=t.rating??t.starRating??t.score??e?.rating??e?.starRating??e?.score,a=Number(n);if(!Number.isFinite(a)||a<=0)return null;let l=a>5?a/20:a;return Math.min(l,5)}function K0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,imageUrl:i}){let r=t.data||{},o=r.review||{},u=h2(r.title),c=p2(r.title,r,a),s=y2(v2(e)),f=zr(e),d=S2(r),m=!!d.url,v=m?d.url:o.url||f,A=i||Q0(e);return{id:`airedale-buying-guide-${n}-${a}`,url:v,image:A,fallbackImage:A,title:u,brand:w2(r),productName:u,merchant:"",rawPrice:d.rawPrice,rawMsrp:d.rawMsrp,price:d.rawPrice>0?String(d.rawPrice):"",msrp:d.rawMsrp>0?String(d.rawMsrp):"",currency:d.currency,isoCurrency:"",isCheckPrice:d.rawPrice<=0,savingLabel:"",savingType:"none",isPrime:!1,starRating:bf(r),description:"",text:"",subtitle:kt(r.subtitle||""),pros:Array.isArray(r.pros)?r.pros:[],cons:Array.isArray(r.cons)?r.cons:[],...l,documentUrl:zr(e),modifiedDate:vf(e),isFeatured:!1,isBuyingGuideProduct:!0,buyingGuideBadge:b2(c,s),hawkModelName:A2(r.hawk),hasCommerceOffer:m,sourceArticleUrl:f}}function C2(e){return gi(e)||tt(e.documentnametext)||tt(e.documentname)}function $u(e){if(Array.isArray(e))return e.map($u).find(Boolean)||"";if(e&&typeof e=="object"){let n=e,a=tt(n["data-widget-type"]||n.dataWidgetType||n.widgetType).toLowerCase(),l=tt(n["data-model-name"]||n.dataModelName||n.modelName);return a==="review"&&l?l:Object.values(n).map($u).find(Boolean)||""}if(typeof e!="string")return"";let t=[e,e.replace(/\\"/g,'"').replace(/\\u0022/gi,'"')];for(let n of t){try{let l=$u(JSON.parse(n));if(l)return l}catch{}let a=n.match(/["']data-widget-type["']\s*:\s*["']review["'][\s\S]{0,1500}?["']data-model-name["']\s*:\s*["']([^"']+)["']/i);if(a?.[1])return a[1].trim()}return""}function gi(e){let t=tt(e.articlehawkmodels);if(t)return t;for(let n of[e.articlepage,e.articlebodypageblock,e.articlepageblock,e.fepjson,e.articlebodyclean]){let a=$u(n);if(a)return a}return""}function X0(e){return(Array.isArray(e)?e:[e]).map(t=>kt(tt(t))).filter(Boolean)}function Z0({article:e,articleIdentity:t,authorProfile:n}){let a=kt(gi(e)),l=kt(C2(e)),i=zr(e),r=Q0(e),o=kt(tt(e.productverdict));return{id:`airedale-review-${t}`,url:i,image:r,fallbackImage:r,title:l,brand:"",productName:l,merchant:"",rawPrice:0,rawMsrp:0,price:"",msrp:"",currency:"",isoCurrency:"",isCheckPrice:!0,savingLabel:"",savingType:"none",isPrime:!1,starRating:bf({rating:e.productrating}),description:o,text:o,...n,documentUrl:i,modifiedDate:vf(e,!0),isFeatured:!1,isReviewProduct:!0,hawkModelName:a||l,hasCommerceOffer:!1,sourceArticleUrl:i,pros:X0(e.productpros),cons:X0(e.productcons)}}function kt(e){return typeof e=="string"?ee(e):e}function W0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,currencyString:i,isoCurrency:r,presentation:o,pricing:u}){let c=t.data||{},{isFeatured:s,externalUrl:f,summaryTitle:d,description:m,imageUrl:v,merchantName:A}=o,{rawPrice:b,rawMsrp:h,savingLabel:g}=u;return{id:`airedale-${n}-${a}`,url:f,image:v,fallbackImage:v,title:kt(d),brand:kt(c.brand||""),productName:kt(c.productName||""),merchant:kt(A),rawPrice:b,rawMsrp:h,price:b>0?b.toString():"",msrp:h>0?h.toString():"",currency:i,isoCurrency:r,isCheckPrice:!b,savingLabel:g,savingType:h>b?"amount":"none",isPrime:!1,starRating:bf(c),description:kt(m),text:kt(c.text||""),...l,documentUrl:zr(e),modifiedDate:vf(e),isFeatured:s,hasCommerceOffer:!!f}}function I0(e,t){let n=t.data||{},a=t.type==="featured-product",l=n.link||{},i=n.image||{};n.brand&&(n.brand=n.brand.replace(/^\d+\.\s*/,"").trim());let r=a?n.url:l.href||null,o=a?n.name||n.brand:n.productName||l.label||(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),u=a?n.strapline||"":n.text||"";if(!a&&!n.productName&&n.text){let f=n.text.split(/<br\s*\/?>/i);if(f.length>1)o=f[0].replace(/<[^>]+>/g,"").trim(),u=f.slice(1).join(" ").replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();else{let d=n.text.match(/<strong>(.*?)<\/strong>/);d&&(o=d[1].replace(/<[^>]+>/g,"").trim(),o.endsWith(":")&&(o=o.slice(0,-1)))}}let c=a?i.mos:i.src||null;c?.startsWith("//")&&(c=`https:${c}`),u=u.replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").replace(/View Deal$/i,"").trim();let s=n.retailer||"";if(!s&&r)try{s=new URL(r).hostname.replace("www.","").split(".")[0],s=s.charAt(0).toUpperCase()+s.slice(1)}catch{}return s||(s="Retailer"),{isFeatured:a,externalUrl:r,summaryTitle:o,description:u,imageUrl:c,merchantName:s}}function J0(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=0,r=0;a?(i=typeof n.salePrice=="number"&&n.salePrice>0?n.salePrice:typeof n.price=="number"?n.price:0,r=typeof n.salePrice=="number"&&typeof n.price=="number"&&n.price>n.salePrice?n.price:0):(i=l.amount?parseFloat(l.amount):0,r=l.amountWas?parseFloat(l.amountWas):0);let o=0,u="";return i>0&&r>i&&(o=parseFloat((r-i).toFixed(2)),u=`Save ${t}${o}`),{rawPrice:i,rawMsrp:r,savingLabel:u}}function R2(e,t){let n=e.indexOf(t);if(n<1)return"";let a=e[n-1]?.data||{},i=a.slides?.[0]?.image||a.image||a;return i?.src||i?.mos||""}function Ur(e,{activeRegionCode:t,targetIso:n,selectedBrands:a,priceRange:l,discountAmount:i,authorHandle:r,authorName:o,createFallbackIdentity:u=Math.random,includeBuyingGuideProducts:c=!1,includeCollections:s=!0,includeDeals:f=!0,includeReviewProducts:d=!1,website:m}){let v=[],A=new Set;return e.forEach(b=>{if(d&&Zt(b)==="review"){v.push(Z0({article:b,articleIdentity:b.id||u(),authorProfile:Qu(b,r,o)}));return}if(!b.articlepage)return;let h=ci(b),g=si(h,c,{includeCollections:s,includeDeals:f});(f===!1||s===!1)&&!g.some(p=>p.type==="buying-guide")&&!el(b,f,s,m)||g.forEach((p,y)=>{if(p.type==="buying-guide"){v.push(K0({article:b,block:p,articleIdentity:b.id||u(),blockIndex:y,authorProfile:Qu(b,r,o),imageUrl:R2(h,p)}));return}let{isoCurr:C,currencyStr:R}=fi(p,t);if(C!==n)return;let T=p.data||{},M=I0(b,p),{externalUrl:w}=M,D=J0(p,R),{rawPrice:k,rawMsrp:se}=D;if(!(a&&a.length>0&&!di(T,a))&&Sa(k,l)&&Ca(k,se,i)){if(w){if(A.has(w))return;A.add(w)}v.push(W0({article:b,block:p,articleIdentity:b.id||u(),blockIndex:y,authorProfile:Qu(b,r,o),currencyString:R,isoCurrency:C,presentation:M,pricing:D}))}})}),v}function mi(e,t){return Ur(e,{...t,selectedBrands:[],priceRange:"all",discountAmount:"0"})}function $0(e,t){return Ur(e,t)}function Gr(e){return(Array.isArray(e)?e:[e]).filter(n=>typeof n=="string").map(n=>n.trim())}function ec(e){return e?.trim().toLowerCase()==="freeform"}function Af(e){return!!e&&!/[^\p{L}\p{N}\s]/u.test(e)}function wf(e){let t=Gr(e.articletag),n=Gr(e.articletaghandle),a=Gr(e.articletagtype),l=new Map;t.forEach((o,u)=>{let c=n[u];!ec(a[u])||!c||!Af(o)||l.set(c.toLowerCase(),{handle:c,label:o,requestValue:o})});let i=Gr(e.articletagtypetag),r=Gr(e.articletagtypetaghandle);return i.forEach((o,u)=>{let[c,...s]=o.split("|"),[f,...d]=(r[u]||"").split("|"),m=s.join("|").trim(),v=d.join("|").trim();!ec(c)||!ec(f)||!v||!Af(m)||l.has(v.toLowerCase())||l.set(v.toLowerCase(),{handle:v,label:m,requestValue:m})}),r.forEach(o=>{let[u,...c]=o.split("|"),s=c.join("|").trim();!ec(u)||!s||!Af(s)||l.has(s.toLowerCase())||l.set(s.toLowerCase(),{handle:s,label:s})}),[...l.values()]}function ev(e,t){if(t)return e.find(n=>n.handle.toLowerCase()===t.toLowerCase())?.requestValue}function hi(e,t){let n=(Array.isArray(t)?t:[t]).filter(a=>typeof a=="string").map(a=>a.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(a=>wf(a).some(l=>n.includes(l.handle.toLowerCase())))}function T2(e){let t=new Map;return Array.isArray(e.articlecategory)?(e.articlecategory.forEach(n=>{if(typeof n!="string")return;let a=n.trim();a===a.toLowerCase()&&(a=a.replace(/\b\w/g,l=>l.toUpperCase())),a&&!t.has(a.toLowerCase())&&t.set(a.toLowerCase(),{handle:a,label:a})}),[...t.values()]):[]}function tv(e,t,n){let a={},l={},i={};e.forEach(u=>{let c=[];if(t.includeReviewProducts&&Zt(u)==="review"&&c.push(u.id||u.documenturl||u.documenthandle||""),u.articlepage)try{let s=ci(u),f=si(s,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});if((t.includeDeals===!1||t.includeCollections===!1)&&!f.some(d=>d.type==="buying-guide")&&!el(u,t.includeDeals,t.includeCollections,t.website))return;f.forEach(d=>{if(d.type==="buying-guide"){c.push(d.id||JSON.stringify(d.data||{}));return}if(fi(d,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:m,rawMsrp:v}=Ku(d);if(!Sa(m,t.priceRange)||!Ca(m,v,t.discountAmount))return;let A=d.data||{};if(t.selectedBrands&&t.selectedBrands.length>0&&!di(A,t.selectedBrands))return;let h=d.type==="featured-product"?A.primaryLink:A.link,g=A.url||A.link&&A.link.url||h&&h.url;c.push(g||JSON.stringify(A))})}catch{}c.length!==0&&n(u).forEach(s=>{let f=s.handle.toLowerCase(),d=Object.keys(a).find(m=>m.toLowerCase()===f);d||(d=s.handle,a[d]=new Set,l[d]=s.label,i[d]=s.requestValue),c.forEach(m=>a[d].add(m))})});let r={};return Object.keys(a).forEach(u=>{r[u]=a[u].size}),{tags:Object.keys(r).map(u=>({handle:u,label:l[u]||u,requestValue:i[u]})).sort((u,c)=>r[c.handle]-r[u.handle]),tagCounts:r}}function tc(e,t){let{tags:n,tagCounts:a}=tv(e,t,T2);return{tags:n.map(l=>l.label),tagCounts:a}}function nc(e,t){let{tags:n,tagCounts:a}=tv(e,t,wf);return{tags:n,tagCounts:a}}function E2(e,t){return e.documentUrl||e.sourceArticleUrl||e.articleId||`deal-${t}`}function yn(e,t,n){if(t!=="mix"||n!=="date_desc")return e;let a=new Map;e.forEach((o,u)=>{let c=E2(o,u),s=a.get(c)||[];s.push(o),a.set(c,s)});let l=[],i=0,r=!0;for(;r;)r=!1,a.forEach(o=>{let u=o[i];u&&(l.push(u),r=!0)}),i+=1;return l}var nv="compact-v1",D2={brand:"",currency:"",hasCommerceOffer:!1,isoCurrency:"",isCheckPrice:!0,isFeatured:!1,isPrime:!1,merchant:"",merchantId:"",msrp:"",price:"",rawMsrp:0,rawPrice:0,savingLabel:"",savingType:"none"},x2={hasCommerceOffer:!0,hawkPricePending:!1,rawMsrp:0,rawPrice:0};function av(e){return e.map(t=>{if(!t.isReviewProduct)return t;let n=String(t.sourceArticleUrl||t.documentUrl||t.url||""),a=t.fallbackImage??t.image??"",l={...D2,...t,fallbackImage:a,image:t.image??a,sourceArticleUrl:n,documentUrl:t.documentUrl??n,url:t.url??n,title:t.title??t.productName??"",text:t.text??t.description??"",hawkPricePending:t.hawkPricePending??!!t.hawkModelName,pros:t.pros??[],cons:t.cons??[]};return t.hawkRegionalCommerce&&(l.hawkRegionalCommerce=Object.fromEntries(Object.entries(t.hawkRegionalCommerce).map(([i,r])=>{let o=r,u=o.productName??l.productName,c=o.rawPrice??0,s=o.rawMsrp??0;return[i,{...x2,...o,fallbackImage:o.fallbackImage??a,image:o.image??a,productName:u,title:o.title??u??l.title,price:o.price??(c?String(c):""),msrp:o.msrp??(s?String(s):"")}]}))),l})}function ac(e,t,n=100){let a=new Set(e.slice(0,t).map((i,r)=>i.id||`visible-${r}`)),l=e.slice(0,t).filter(i=>i.isReviewProduct).length;return e.filter((i,r)=>{let o=i.id||`visible-${r}`;return a.has(o)?!0:i.isReviewProduct?(l+=1,l<=n):!1})}function lv(e,t){let n=new Map(t.map((a,l)=>[a.id||`enriched-${l}`,a]));return e.map((a,l)=>n.get(a.id||`enriched-${l}`)||a)}var M2=new Set(["deal","featured-product","gallery","buying-guide","text","section"]);function lc(e){return!!e&&typeof e=="object"}function iv(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function rv(e){try{let t=iv(e);if(!Array.isArray(t)||!t[0])return;let n=t[0],a=typeof n=="string"?iv(n):Array.isArray(n)?n:lc(n)&&"type"in n?t:n;if(!Array.isArray(a))return;let l=a.filter(i=>lc(i)&&M2.has(i.type)).map(i=>i.type==="text"&&i.data?{type:"text",data:{paragraphs:Array.isArray(i.data.paragraphs)?i.data.paragraphs.slice(0,3):void 0,text:typeof i.data.text=="string"?i.data.text.slice(0,500):void 0}}:i.type==="section"&&i.data?{type:"section",data:{text:i.data.text,heading:i.data.heading,title:i.data.title}}:i);return l.length>0?[JSON.stringify(l)]:void 0}catch{return}}function ov(e){if(!Array.isArray(e))return[];let t=!1;return e.map(n=>{if(!lc(n))return n;let a=n.articlepage?rv(n.articlepage):void 0,l=!!(n.articleauthormedia||n.articleauthorrole),i=!!(!t&&(n.articleauthorbio||n.articleauthorlongbio||n.articleauthorsocialnetworks));return i&&(t=!0),{id:n.id,articlename:n.articlename,documentname:n.documentname,documentnametext:n.documentnametext,documenthandle:n.documenthandle,articlecategory:n.articlecategory,articletag:n.articletag,articletaghandle:n.articletaghandle,articletagtype:n.articletagtype,articletagtypetag:n.articletagtypetag,articletagtypetaghandle:n.articletagtypetaghandle,articlecontroltag:n.articlecontroltag,articletype:n.articletype,articleauthor:n.articleauthor,articleauthorhandle:n.articleauthorhandle,articleauthortext:n.articleauthortext,...l?{articleauthorrole:n.articleauthorrole,articleauthormedia:n.articleauthormedia}:{},articlestrapline:n.articlestrapline,articlesocialtitle:n.articlesocialtitle,documenturl:n.documenturl,articlemedia:n.articlemedia,articlehawkmodels:n.articlehawkmodels,productrating:n.productrating,productpros:n.productpros,productcons:n.productcons,productverdict:n.productverdict,contentmodifieddate:n.contentmodifieddate,modifieddate:n.modifieddate,createddate:n.createddate,datepublished:n.datepublished,publisheddate:n.publisheddate,...i?{articleauthorbio:n.articleauthorbio,articleauthorlongbio:n.articleauthorlongbio,articleauthorsocialnetworks:n.articleauthorsocialnetworks}:{},...a?{articlepage:a}:{}}})}function uv(e){return Array.isArray(e)?e.map(t=>{if(!lc(t))return t;let n=t.articlepage?rv(t.articlepage):void 0;return{id:t.id,articleid:t.articleid,articlename:t.articlename,documentname:t.documentname,documentnametext:t.documentnametext,documenthandle:t.documenthandle,articleauthor:t.articleauthor,articleauthorhandle:t.articleauthorhandle,articleauthortext:t.articleauthortext,articleauthorrole:t.articleauthorrole,articleauthormedia:t.articleauthormedia,articleauthorbio:t.articleauthorbio,articleauthorlongbio:t.articleauthorlongbio,articleauthorsocialnetworks:t.articleauthorsocialnetworks,articlecategory:t.articlecategory,articletag:t.articletag,articletaghandle:t.articletaghandle,articletagtype:t.articletagtype,articletagtypetag:t.articletagtypetag,articletagtypetaghandle:t.articletagtypetaghandle,articletype:t.articletype,articlestrapline:t.articlestrapline,articlesocialtitle:t.articlesocialtitle,documenturl:t.documenturl,articlemedia:t.articlemedia,articlehawkmodels:t.articlehawkmodels,productrating:t.productrating,productpros:t.productpros,productcons:t.productcons,productverdict:t.productverdict,url:t.url,contentmodifieddate:t.contentmodifieddate,modifieddate:t.modifieddate,createddate:t.createddate,datepublished:t.datepublished,publisheddate:t.publisheddate,content:t.content,dek:t.dek,image_thumbnail:t.image_thumbnail,intro:t.intro,paragraphs:t.paragraphs,strapline:t.strapline,subtitle:t.subtitle,title:t.title,...n?{articlepage:n}:{}}}):[]}function pi(e){if(!e?.modifiedDate)return 0;let t=Array.isArray(e.modifiedDate)?e.modifiedDate[0]:e.modifiedDate,n=new Date(t).getTime();return Number.isNaN(n)?0:n}function nl(e){return e?.hasCommerceOffer===!0?!0:e?.hasCommerceOffer===!1?!1:!!(!e?.isBuyingGuideProduct&&!e?.isReviewProduct&&e?.url)}function ln(e,t,n=!0){let a=!0;t==="date_desc"?e.sort((l,i)=>pi(i)-pi(l)):t==="price_asc"?e.sort((l,i)=>l.rawPrice-i.rawPrice):t==="price_desc"?e.sort((l,i)=>i.rawPrice-l.rawPrice):t==="discount_desc"?e.sort((l,i)=>{let r=l.rawMsrp>l.rawPrice?l.rawMsrp-l.rawPrice:0;return(i.rawMsrp>i.rawPrice?i.rawMsrp-i.rawPrice:0)-r}):t==="rating_desc"?e.sort((l,i)=>{let r=Number(l.starRating)||0;return(Number(i.starRating)||0)-r||pi(i)-pi(l)}):t==="scored_first"?e.sort((l,i)=>{let r=Number(l.starRating)>0?1:0;return(Number(i.starRating)>0?1:0)-r||pi(i)-pi(l)}):a=!1,a&&n&&e.sort((l,i)=>Number(nl(i))-Number(nl(l)))}function cv(e,t,n){let a=e;if(!a&&t){let l=n.find(i=>i.toLowerCase()===t?.toLowerCase());l&&(a=l)}return a}function Pr(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(a=>a.articlecategory&&Array.isArray(a.articlecategory)&&a.articlecategory.some(l=>{if(!l||typeof l!="string")return!1;let i=l.toLowerCase(),r=i.split(":::");return i===n||r[0]===n||i.includes(n)}))}function sv(e){let t=wt(e.region);return{activeRegionCode:t,targetIso:an(t)}}function al(e,t,{discountAmount:n,priceRange:a}={}){let l=!!(a&&a!=="all"),i=!!(n&&n!=="0"&&n!=="all");return!t?.length&&!l&&!i?e:e.filter(r=>!r.isBuyingGuideProduct&&!r.isReviewProduct?!0:t?.length&&!di({brand:r.brand},t)||l&&(!Number(r.rawPrice)||!Sa(Number(r.rawPrice),a))?!1:Ca(Number(r.rawPrice)||0,Number(r.rawMsrp)||0,n))}function _2(e,t){let n=e.articleauthorhandle||[],a=e.articleauthor||[],l=e.articleauthortext||[],i=new Set([t.handle.toLowerCase(),t.fullName.toLowerCase(),t.name.toLowerCase()]);return[...n,...a,...l].some(r=>i.has(String(r||"").toLowerCase()))}function Sf(e,t,n){let a=Object.fromEntries(e.map(l=>[l.handle,0]));return t.forEach(l=>{let i=mi([l],n).length;i!==0&&e.forEach(r=>{_2(l,r)&&(a[r.handle]+=i)})}),a}function Cf(e,t){let n=Xu(e,t.authorHandle,t.authorName),a=t.selectedArticleId?n.filter(A=>A.id===t.selectedArticleId):n,{activeRegionCode:l,targetIso:i}=sv(t),{tags:r,tagCounts:o}=tc(a,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),u=cv(t.activeDealTag,t.query,r),c=Pr(a,u),{tags:s,tagCounts:f}=nc(c,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),d=t.activeFreeformTags?.length?t.activeFreeformTags:t.activeFreeformTag?[t.activeFreeformTag]:[],m=d.flatMap(A=>{let b=s.find(h=>h.handle.toLowerCase()===A.toLowerCase());return b?[b.handle]:[]}),v=t.preserveFreeformTagSelection?d:m;return{activeDealTag:u,activeFreeformTag:v[0]||null,activeFreeformTags:v,activeRegionCode:l,authorArticles:n,freeformTagCounts:f,freeformTags:s,tagCounts:o,tags:r,targetArticles:hi(c,v),targetIso:i}}function ic(e,t,n,a){let l=Iu(e,{activeRegionCode:n,targetIso:a,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),i=Ur(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});ln(i,t.sort,t.prioritiseCommercialProducts);let r=yn(al(i,t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange}),t.productSelection,t.sort).map(o=>(o.isBuyingGuideProduct||o.isReviewProduct)&&o.hawkModelName?{...o,hawkPricePending:!0}:o);return{brands:l,displayedDeals:r,extractedDeals:i}}function dv(e,t){let{activeRegionCode:n,targetIso:a}=sv(t),l=Lr(e,t.website||"tomsguide"),i=e.filter(o=>mi([o],{activeRegionCode:n,targetIso:a,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}).length>0),r=al(Ur(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange});return{authorCount:kr(l,i).length,deals:r}}function fv({allArticles:e,authorArticles:t,inventoryArticles:n,bakeReviewInventory:a,brands:l,couponMap:i,currentDealTag:r,currentFreeformTags:o,displayedDeals:u,options:c,resultCount:s,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}){let h=Lr(e,c.website||"tomsguide"),g=Sf(h,n,{activeRegionCode:wt(c.region),targetIso:an(wt(c.region)),selectedBrands:c.selectedBrands,priceRange:c.priceRange,discountAmount:c.discountAmount,includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}),p=kr(h,e.filter(C=>mi([C],{activeRegionCode:wt(c.region),targetIso:an(wt(c.region)),includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}).length>0)),y=Number(s)||12;return{activeDealTag:r,activeFreeformTag:o[0]||null,activeFreeformTags:o,allDeals:a?ac(u,y):u,authorArticles:ov(t),authors:Yu(p,g),brands:l,couponMap:i,deals:u.slice(0,y),reviewInventoryBaked:a,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}}function B2(e){return e&&e.widget&&e.widget.data&&Array.isArray(e.widget.data.offers)?e.widget.data.offers:e&&e.data&&Array.isArray(e.data.offers)?e.data.offers:Array.isArray(e)?e:e&&Array.isArray(e.offers)?e.offers:e&&e.offers&&Array.isArray(e.offers.offer)?e.offers.offer:e&&Array.isArray(e.data)?e.data:[]}function gv(e,t,n){let a={...n},l=new Set;return B2(e).forEach(r=>{let o="";r.merchant_name?o=r.merchant_name:r.merchant&&r.merchant[0]&&r.merchant[0].name?o=r.merchant[0].name:r.merchant&&r.merchant.name?o=r.merchant.name:r.retailer&&(o=r.retailer),o&&l.add(o.toLowerCase())}),t.forEach(r=>{a[r]=l.has(r.toLowerCase())?"has":"none"}),a}function mv(e){let t=[];return e?.widget?.data?.offers?t=e.widget.data.offers:e?.data?.offers?t=e.data.offers:Array.isArray(e)?t=e:e?.offers?.offer?t=Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers&&(t=Array.isArray(e.offers)?e.offers:[e.offers]),t}async function hv({couponMap:e,couponUrl:t,fetcher:n=fetch,merchants:a}){if(!t)return e;try{let l=await n(t.toString());return gv(await l.json(),a,e)}catch{let l={...e};return a.forEach(i=>{l[i]="none"}),l}}function pv({enrichingBuyingGuides:e,error:t,loading:n,loadingMore:a,refreshingFeed:l}){return t?"error":a?"loading_more":n?"loading_inventory":l?"refreshing_inventory":e?"enriching_visible_cards":"ready"}function yv(e,t){let n=Xu(tl(e),t.authorHandle,t.authorName),a=wt(t.region),l=an(a),{tags:i,tagCounts:r}=tc(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),o=Iu(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),{tags:u,tagCounts:c}=nc(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),s=$0(n,{activeRegionCode:a,targetIso:l,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});ln(s,t.sort,t.prioritiseCommercialProducts);let f=yn(s,t.productSelection,t.sort);return{authorArticles:n,brands:o,deals:f,tagCounts:r,tags:i,freeformTagCounts:c,freeformTags:u}}var N2="fc-author-commerce-widget",vn="airedale-feeds";var rc=null;function vv(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function Rf(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error),e.onabort=()=>n(e.error)})}function Tf(){return rc||(typeof window>"u"||typeof window.indexedDB>"u"?Promise.resolve(null):(rc=new Promise(e=>{let t=window.indexedDB.open(N2,14);t.onupgradeneeded=()=>{let n=t.result;n.objectStoreNames.contains(vn)||n.createObjectStore(vn,{keyPath:"key"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),rc))}function bv({authorHandle:e,authorName:t,includeBuyingGuideProducts:n,includeCollections:a,includeDeals:l,includeReviewProducts:i,articleCategory:r,articleTag:o,pageStarts:u,reviewPageStarts:c,loadAllReviewPages:s,website:f}){return["v14",f||"tomsguide",e||"",t||"",n?"buying-guides":"",a===!1?"no-collections":"collections",l===!1?"no-deals":"deals",i?"reviews":"",r||"",o||"",u?.join(",")||"",c?.join(",")||"",s===!1?"review-pages-partial":""].map(d=>encodeURIComponent(d)).join("|")}async function O2(e){let t=await Tf();if(!t)return;let n=t.transaction(vn,"readwrite"),a=Rf(n);n.objectStore(vn).delete(e),await a}async function Av(e,t=Date.now()){try{let n=await Tf();if(!n)return null;let a=n.transaction(vn,"readonly"),l=await vv(a.objectStore(vn).get(e));if(!l||l.schemaVersion!==14||!Array.isArray(l.articles)||l.articles.length===0)return null;let i=Math.max(0,t-l.cachedAt);return i>864e5?(O2(e),null):{articles:l.articles,cachedAt:l.cachedAt,isFresh:i<=6e5}}catch{return null}}async function k2(e){let t=e.transaction(vn,"readwrite"),n=Rf(t),a=t.objectStore(vn);(await vv(a.getAll())).sort((i,r)=>r.cachedAt-i.cachedAt).slice(10).forEach(i=>a.delete(i.key)),await n}async function wv(e,t,n=Date.now()){if(t.length!==0)try{let a=await Tf();if(!a)return;let l=a.transaction(vn,"readwrite"),i=Rf(l);l.objectStore(vn).put({articles:t,cachedAt:n,key:e,schemaVersion:14}),await i,await k2(a)}catch{}}var Ef=[];var Mf=[],Df=0;function Sv(){for(;Df<4&&Mf.length>0;){let e=Mf.shift();if(!e)return;Df+=1,e.run().then(e.resolve,e.reject).finally(()=>{Df-=1,Sv()})}}function L2(e){return new Promise((t,n)=>{Mf.push({reject:n,resolve:t,run:e}),Sv()})}function xf(e){Ef.push(e),Ef.length>100&&Ef.shift()}async function oc(e,t,n=4){let a=new Array(e.length),l=0,i=Math.min(Math.max(1,n),e.length);return await Promise.all(Array.from({length:i},async()=>{for(;l<e.length;){let r=l;l+=1,a[r]=await t(e[r],r)}})),a}async function yi(e,t){return L2(async()=>{let n=t.fetcher||fetch,a=Date.now(),l=new AbortController,i=!1,r=()=>l.abort();if(t.signal?.aborted)return xf({durationMs:0,outcome:"aborted",source:t.source,startedAt:a}),{data:null,response:null};t.signal?.addEventListener("abort",r,{once:!0});let o=setTimeout(()=>{i=!0,l.abort()},8e3);try{let u=await n(e,{signal:l.signal}),c=u.ok?await u.json():null;return xf({durationMs:Date.now()-a,outcome:u.ok?"succeeded":"failed",source:t.source,startedAt:a}),{data:c,response:u}}catch{return xf({durationMs:Date.now()-a,outcome:i?"timed_out":t.signal?.aborted?"aborted":"failed",source:t.source,startedAt:a}),{data:null,response:null}}finally{clearTimeout(o),t.signal?.removeEventListener("abort",r)}})}var Bf="https://airedale.futurecdn.net/feeds/feed_1786707986217.json",H2="https://airedale.futurecdn.net/feeds/feed_1786702796175.json",z2="https://airedale.futurecdn.net/feeds/feed_1787582137748.json",U2=2,_f=new Map,Cv=new Map;function Rv(e){let t=new URL(e),n=String(t.searchParams.get("articleType")||"").trim().toLowerCase(),a=String(t.searchParams.get("articleControlTag")||"").replace(/[\s-]+/g,"_").toLowerCase();return n!=="deals"&&a!=="type_deal"?null:(t.searchParams.delete("start"),t.toString())}function G2(e){return!e.response?.ok||e.articles.length<50?!1:!e.articles.some(t=>pf(t)&&!yf(t))}function P2(e){return!e.parameter||!e.value?"":`&${e.parameter}=${encodeURIComponent(e.value)}`}function q2(e,t="",n=!1,a,l,{includeCollections:i=!0,includeDeals:r=!0}={},o){let u=Wu(e,{includeBuyingGuideProducts:n,includeCollections:i,includeDeals:r}),c=a?`&articleCategory=${encodeURIComponent(a)}`:"",s=o?`&articleTag=${encodeURIComponent(o)}`:"";return u.scopes.flatMap(f=>(l||u.pageStarts).map(d=>`${Bf}?site=${e}&limit=${50}&start=${d}${P2(f)}${t}${c}${s}`))}function Tv(e,t="",n,a=0,l){let i=e==="pcgamer"?"&articleControlTag=channel_gaming_hardware":"",r=n?`&articleCategory=${encodeURIComponent(n)}`:"",o=l?`&articleTag=${encodeURIComponent(l)}`:"";return`${H2}?site=${encodeURIComponent(e)}&articleType=review&limit=${50}&start=${a}${i}${t}${r}${o}`}function F2(e,t){return t!=="pcgamer"?e:e.map(n=>{let a=Array.isArray(n.articlecontroltag)?n.articlecontroltag:[];return a.some(l=>String(l).replace(/[^a-z0-9]/gi,"").toLowerCase()==="channelgaminghardware")?n:{...n,articlecontroltag:[...a,"channel_gaming_hardware"]}})}function j2(e,t){return`${z2}?site=${encodeURIComponent(e)}&documentHandle=${encodeURIComponent(t)}&limit=1`}async function Y2(e,t){let n=`${e}|${t}`,a=Cv.get(n);if(a)return a;let l=yi(j2(e,t),{source:"review-model-resolver"}).then(({data:i})=>i?gf(i)[0]:null).then(i=>i?gi(i):"").catch(()=>"");return Cv.set(n,l),l}async function Nf(e,t,n,a="date_desc"){let l=o=>{let u=[o.datepublished,o.publisheddate,o.createddate,o.contentmodifieddate,o.modifieddate].find(s=>s!=null&&String(s).trim()),c=new Date(Array.isArray(u)?u[0]:u).getTime();return Number.isFinite(c)?c:0},i=o=>{let u=Array.isArray(o.productrating)?o.productrating[0]:o.productrating;return Number(u)||0},r=e.filter(o=>Zt(o)==="review"&&!gi(o)&&typeof o.documenthandle=="string"&&o.documenthandle.trim()).sort((o,u)=>{let c=i(o),s=i(u);return a==="rating_desc"?s-c||l(u)-l(o):a==="scored_first"&&+(s>0)-+(c>0)||l(u)-l(o)}).slice(0,n);return await Promise.all(r.map(async o=>{let u=await Y2(t,o.documenthandle);u&&(o.articlehawkmodels=[u])})),e}function xv(e,t){let n=()=>{wv(e,uv(t))};if(typeof window<"u"&&typeof window.requestIdleCallback=="function"){window.requestIdleCallback(n,{timeout:2e3});return}setTimeout(n,0)}function V2(e,t){return e&&e!=="all-authors"?`&articleAuthorHandle=${encodeURIComponent(e)}`:t&&t!=="All authors"&&t!=="all-authors"?`&articleAuthor=${encodeURIComponent(t)}`:""}function X2({articleCategory:e,articleTag:t,authorParameter:n}){return!!(n&&!e&&!t)}async function Mv({authorHandle:e,authorName:t,fallbackAuthorName:n,includeBuyingGuideProducts:a,includeCollections:l,includeDeals:i,includeReviewProducts:r,onProgress:o,articleCategory:u,articleTag:c,pageStarts:s,reviewPageStarts:f,loadAllReviewPages:d,signal:m,throwOnFailure:v,website:A}){let b=A||"tomsguide",h=V2(e,t),g=[],p=!1,y=!0,C=w=>j0(w,b,a,r,l,i),R=()=>q0(g).map(w=>{let D=gi(w);return D&&!String(w.articlehawkmodels||"").trim()?{...w,articlehawkmodels:[D]}:w}).filter(C),T=()=>{let w=R();w.length>0&&o?.(w)};try{let w=q2(b,h,a,u,s,{includeCollections:l,includeDeals:i},c),D=[];r&&(f||[0]).forEach(X=>{let de=Tv(b,h,u,X,c);D.push(de),w.push(de)});let k=async(X,de=D.includes(X)?"review-feed":"author-feed")=>{let $e=await yi(X,{signal:m,source:de});for(let jr=0;jr<U2&&!$e.response?.ok&&!m?.aborted;jr+=1)$e=await yi(X,{signal:m,source:de});let{data:Z,response:x}=$e,P=Z?gf(Z):[],Q=b==="pcgamer"&&de.startsWith("review-feed")?F2(P,b):P,Vn={articles:Q,data:Z,isPcGamerHardwareReviewFeed:b==="pcgamer"&&de.startsWith("review-feed"),response:x,reviewTotalCount:D.includes(X)&&Number(x?.headers.get("x-total-count"))||null};return Q.length>0&&g.push(...Q),Vn},se=w.filter(X=>Number(new URL(X).searchParams.get("start")||0)===0),I=w.filter(X=>!se.includes(X)),j=await oc(se,X=>k(X));T();let He=new Map(se.flatMap((X,de)=>{let $e=Rv(X);return $e?[[$e,j[de]]]:[]})),ze=new Map,St=[];I.forEach(X=>{let de=Rv(X);if(!de){St.push(X);return}ze.set(de,[...ze.get(de)||[],X])});let[Ie,rn]=await Promise.all([oc(St,X=>k(X)),Promise.all([...ze.entries()].map(async([X,de])=>{let $e=[],Z=He.get(X);for(let x of de){if(!Z||!G2(Z))break;let P=await k(x);$e.push(P),Z=P}return $e}))]),Be=[...Ie,...rn.flat()],Je=[...j,...Be];p=Je.length>0&&Je.every(X=>!X.response?.ok);let nt=Je.find(X=>X.reviewTotalCount!==null)?.reviewTotalCount;if(d!==!1&&f&&nt&&nt>f.length*50){let X=new Set(f),de=[];for(let Z=0;Z<nt;Z+=50)X.has(Z)||de.push(Z);let $e=await oc(de,async Z=>await k(Tv(b,h,u,Z,c),"review-feed-page"));Je.push(...$e)}y=Je.every(X=>X.response?.ok)}catch(w){y=!1}if(v&&p)throw new Error("The author feed could not be loaded");let M=R();if(M.length===0&&X2({authorParameter:h,articleCategory:u,articleTag:c}))try{let w=await yi(`${Bf}?site=${b}&limit=150${h}`,{signal:m,source:"author-feed-fallback"});if(!w.response?.ok&&n&&(w=await yi(`${Bf}?site=${b}&limit=150&articleAuthor=${encodeURIComponent(n)}`,{signal:m,source:"author-feed-fallback"})),w.data){let D=w.data,k=Array.isArray(D)?D:D.data||[];k.length>0&&(M=k.slice(0,150))}}catch(w){}return{articles:M.filter(C),complete:!m?.aborted&&y}}function Ev(e,t){let n=_f.get(e);if(n)return n;let a=Mv(t).then(l=>(l.complete&&l.articles.length>0&&xv(e,l.articles),l)).finally(()=>{_f.delete(e)});return _f.set(e,a),a}async function Dv(e,t){let n=await Mv(t);return n.complete&&n.articles.length>0&&xv(e,n.articles),n}async function _v({onBackgroundRefresh:e,onProgress:t,...n}){let a=bv(n),l=await Av(a);return l?(t?.(l.articles),l.isFresh||(n.signal?Dv(a,n):Ev(a,n)).then(({articles:o,complete:u})=>{u&&o.length>0&&e?.(o)}),l.articles):(await(n.signal?Dv(a,{...n,onProgress:t}):Ev(a,{...n,onProgress:t}))).articles}function Of(e,t){let n=e.shipping?.prime===!0,a=e.merchant?.name||e.merchant_name||e.retailer||"Retailer";typeof e.merchant=="string"&&(a=e.merchant);let l=null,i=0,r=String(e.model_id||e.id||"");if(r&&t)if(t[r]&&t[r].score!=null)l=parseFloat(t[r].score);else{let o=Object.values(t).find(u=>String(u.model_id)===r||String(u.id)===r);o&&o.score!=null&&(l=parseFloat(o.score))}return l!=null&&(i=Math.round((l>10?l/20:l/2)*2)/2),{isPrime:n,merchant:a,starRating:i>0?i:null}}function kf(e){let t=String(e.price||e.current_price||"0"),n=String(e.was_price||e.msrp||e.original_price||"0"),a=parseFloat(t.replace(/[^0-9.]/g,""))||0,l=parseFloat(n.replace(/[^0-9.]/g,""))||0,i=a===0||t==="0.00"||t==="0",r=e.currency&&typeof e.currency=="string"?e.currency:e.currency_symbol&&typeof e.currency_symbol=="string"?e.currency_symbol:"$",o=ee(e.percentage_saving_label||"");!o&&l>a&&a>0&&(o=Math.round((l-a)/l*100)+"% OFF");let u=r;return u.includes("&")&&(u.includes("36")?u="$":u.includes("163")||u.includes("pound")?u="\xA3":(u.includes("8364")||u.includes("euro"))&&(u="\u20AC")),{rawPrice:a,rawMsrp:l,currency:u,isCheckPrice:i,savingLabel:o}}function Bv({query:e,region:t,retailer:n,selectedBrands:a,offerType:l,priceRange:i,discountAmount:r,resultCount:o}){let u=new URL("https://search-api.fie.future.net.uk/widget.php");if(u.searchParams.append("model_name",e),t&&t!=="auto"&&u.searchParams.append("area",t),n&&u.searchParams.append("filter_merchant_name",n),a&&a.length>0&&u.searchParams.append("filter_label[text_brand]",a.join(",")),l&&u.searchParams.append("offer",l),i&&i!=="all"){if(i==="under50")u.searchParams.append("filter_max_price","50");else if(i==="over50")u.searchParams.append("filter_min_price","50");else if(i==="over30")u.searchParams.append("filter_min_price","30");else if(i==="over500")u.searchParams.append("filter_min_price","500");else if(i.includes("_")){let[c,s]=i.split("_");c&&u.searchParams.append("filter_min_price",c),s&&u.searchParams.append("filter_max_price",s)}}if(r&&r!=="0"){let c=(100-parseInt(r))/100;u.searchParams.append("min_discount_ratio",c.toString())}return u.searchParams.append("filter_product_types","deals"),u.searchParams.append("rows",String(o||"12")),u}function Nv(e){return e?.widget?.data?.offers?e.widget.data.offers:e?.data?.offers?e.data.offers:Array.isArray(e)?e:e?.offers?.offer?Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers?Array.isArray(e.offers)?e.offers:[e.offers]:[]}function Ov(e){let t=[];return e.forEach(n=>{let a=[];Array.isArray(n.offers)?a=n.offers:Array.isArray(n.offer)?a=n.offer:n.offers&&typeof n.offers=="object"?a=[n.offers]:n.offer&&typeof n.offer=="object"&&(a=[n.offer]),a.length>0?a.forEach(l=>{t.push({...n,...l})}):t.push(n)}),t}function kv(e){return e?.widget?.data?.model_info?e.widget.data.model_info:e?.data?.model_info?e.data.model_info:{}}var Lf=new Map,Q2=3e3,K2=["GB","US"],Lv=6,Z2=["brand","currency","fallbackImage","hasCommerceOffer","hawkPricePending","hawkListings","image","isCheckPrice","merchant","merchantId","modelId","msrp","price","productKey","productName","rawMsrp","rawPrice","savingLabel","title","url"];function Hf(e){return String(e||"").trim().toLowerCase()}function Gv(e){return e==="UK"?"GB":e}function Pv(e,t){let n=String(t||"").trim().toUpperCase(),l={AU:["A$","AUD"],CA:["CA$","CAD"],DE:["\u20AC","EUR"],ES:["\u20AC","EUR"],FR:["\u20AC","EUR"],GB:["\xA3","GBP","GB\xA3"],IT:["\u20AC","EUR"],NL:["\u20AC","EUR"],US:["$","USD","US$"]}[e];return!l||l.includes(n)}function Hv(e,t){return String(e.id||`hawk-deal-${t}`)}function W2(e){return e.map(t=>({...t,hasCommerceOffer:!1,hawkPricePending:!!t.hawkModelName,hawkListings:[],image:t.fallbackImage||t.image||"",isCheckPrice:!0,merchant:"",merchantId:"",msrp:"",price:"",productKey:"",rawMsrp:0,rawPrice:0,savingLabel:"",url:t.sourceArticleUrl||t.documentUrl||t.url}))}function I2(e){return Z2.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}function qv(e){return!!((e.isBuyingGuideProduct||e.isReviewProduct)&&e.hawkModelName)}function J2(e){return e.model_image_url||e.model_image||e.product_image||e.image_url||e.image||""}function Fv(e){return e.link||e.url||e.offer_link||""}function $2(e,t){let n=String(t.model_id||t.id||"");return n&&e[n]?e[n]:Object.values(e).find(a=>String(a?.model_id||a?.id||"")===n)||{}}function eS(e,t,n){let a=e.map(i=>{let r=kf(i),o=Of(i,t),u=Fv(i),c=ee(String(o.merchant||"")).trim();return!u||!c||r.rawPrice<=0||!Pv(n,r.currency)?null:{merchant:c,merchantId:typeof i.merchant=="object"?String(i.merchant?.id||""):"",modelId:String(i.model_id||""),offer:i,productKey:String(i.product_key||""),rawPrice:r.rawPrice,url:u}}).filter(i=>i!==null).sort((i,r)=>i.rawPrice-r.rawPrice||i.merchant.localeCompare(r.merchant)),l=new Set;return a.filter(i=>{let r=i.merchant.toLocaleLowerCase();return l.has(r)?!1:(l.add(r),!0)}).slice(0,4)}async function zv(e,t,n){let a=`${t}|${Hf(e)}`;return Lf.has(a)||Lf.set(a,(async()=>{let l;try{let i=new AbortController;l=setTimeout(()=>i.abort(),Q2);let r=await n(Bv({query:e,region:t,resultCount:12}).toString(),{signal:i.signal});if(!r.ok)return null;let o=await r.json(),u=Ov(Nv(o)),c=Hf(e),s=u.filter(A=>Hf(A.model_name||A.model)===c),f=s.length?s:u,d=f[0]||null;if(!d)return null;let m=kv(o),v=$2(m,d);return{brand:String(v?.brand||d.brand||"").trim(),modelInfo:m,offer:d,offers:f}}catch{return null}finally{l&&clearTimeout(l)}})()),Lf.get(a)}function Uv(e,t,n){return e.map(a=>{let l=String(a.hawkModelName);if(!qv(a)||!t.has(l))return a;let i=t.get(l);if(!i)return{...a,hawkPricePending:!1};let{offer:r}=i.lookup,o=kf(r),u=Of(r,i.lookup.modelInfo),c=J2(r),s=Fv(r),f=ee(String(r.model_name||r.model||a.hawkModelName||a.productName||a.title||"").trim()),d=!!(i.region===n&&s&&Pv(n,o.currency)),m=i.region===n?eS(i.lookup.offers,i.lookup.modelInfo,n).map(({offer:v,...A})=>A):[];return d?{...a,brand:i.lookup.brand||r.brand||a.brand,currency:o.currency||a.currency,fallbackImage:c?a.image:a.fallbackImage,hasCommerceOffer:!0,hawkPricePending:!1,hawkListings:m,image:c||a.image,isCheckPrice:o.isCheckPrice,merchant:u.merchant||a.merchant,merchantId:typeof r.merchant=="object"&&r.merchant?.id||"",modelId:r.model_id||"",msrp:o.rawMsrp>0?String(o.rawMsrp):"",price:o.rawPrice>0?String(o.rawPrice):"",productKey:r.product_key||"",productName:f||a.productName,rawMsrp:o.rawMsrp,rawPrice:o.rawPrice,savingLabel:o.savingLabel,title:f||a.title,url:s||a.url}:{...a,brand:i.lookup.brand||a.brand,fallbackImage:c?a.image:a.fallbackImage,hawkPricePending:!1,image:c||a.image,productName:f||a.productName,title:f||a.title}})}async function vi(e,t,n=fetch,a,l=[],i){let r=Gv(t),o=new Map,u=e.filter(qv).map(f=>String(f.hawkModelName)),c=new Set(u),s=Array.from(new Set([...l.filter(f=>c.has(f)),...u])).slice(0,a);for(let f=0;f<s.length;f+=Lv)await Promise.all(s.slice(f,f+Lv).map(async d=>{let m=await zv(d,r,n),v=m||r==="GB"?null:await zv(d,"GB",n);o.set(d,m?{lookup:m,region:r}:v?{lookup:v,region:"GB"}:null),i?.(Uv(e,o,r))}));return Uv(e,o,r)}async function jv(e,t=fetch){let n=W2(e),a=await Promise.all(K2.map(async i=>[i,await vi(n,i,t)])),l=new Map;return a.forEach(([i,r])=>{r.forEach((o,u)=>{if(!o.hasCommerceOffer)return;let c=Hv(o,u),s=l.get(c)||{};s[i]=I2(o),l.set(c,s)})}),e.map((i,r)=>{let o=l.get(Hv(i,r));return o?{...i,hawkRegionalCommerce:o}:i})}function zf(e,t){let n=Gv(t);return e.map(a=>{let l=a.hawkRegionalCommerce?.[n];return l?{...a,...l,hawkPricePending:!1}:a})}function Yv(e,t){let n=Array.from(new Set(e.map(i=>i.merchant).filter(Boolean))),a={};if(n.forEach(i=>{a[i]="loading"}),n.length===0)return{merchants:n,couponMap:a,couponUrl:null};let l=new URL("https://search-api.fie.future.net.uk/widget.php");return l.searchParams.append("model_name","Everything"),l.searchParams.append("filter_merchant_name",n.join(",")),l.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),l.searchParams.append("sort","voucher"),l.searchParams.append("rows","120"),l.searchParams.append("origin","widgets-clientside"),l.searchParams.append("combine_product_types","1"),l.searchParams.append("language","en-GB"),l.searchParams.append("all_filters","false"),l.searchParams.append("exclude_unlabelled","false"),l.searchParams.append("include_specs","false"),t&&t!=="auto"&&l.searchParams.append("area",t),{merchants:n,couponMap:a,couponUrl:l}}function Vv(e,t){let n=new URL("https://search-api.fie.future.net.uk/widget.php");return n.searchParams.append("model_name","Everything"),n.searchParams.append("language","en-GB"),t&&t!=="auto"&&n.searchParams.append("area",t),n.searchParams.append("combine_product_types","1"),n.searchParams.append("filter_merchant_name",e),n.searchParams.append("all_filters","false"),n.searchParams.append("exclude_unlabelled","false"),n.searchParams.append("include_specs","false"),n.searchParams.append("sort","voucher"),n.searchParams.append("distinct_merchants","natural"),n.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),n.searchParams.append("rows","50"),n.searchParams.append("origin","widgets-clientside"),n}function Uf(e,t,n=!0){if(!e?.length)return e||[];if(t==="date_desc"&&!n)return e;let a=[...e];return ln(a,t,n),a}function uc(e,t,n,a=!0){if(n!=="date_desc"||!e?.length)return t;let l=(c,s)=>String(c.id||s),i=new Map(t.map((c,s)=>[l(c,s),c])),r=new Set,o=e.flatMap((c,s)=>{let f=l(c,s);r.add(f);let d=i.get(f);return d?[d]:[]}),u=t.filter((c,s)=>!r.has(l(c,s)));return a?[...o.filter(nl),...u.filter(nl),...o.filter(c=>!nl(c)),...u.filter(c=>!nl(c))]:[...o,...u]}function Xv({activeDealTag:e,activeFreeformTag:t,clickedAuthorOverride:n,compactEmbed:a,compactInventoryExplored:l,compactLoadRequested:i,initialActiveDealTag:r,initialActiveFreeformTag:o,reviewInventoryBaked:u}){return!!(a&&u&&!n&&!i&&!l&&(!e||e===r)&&(!t||t===o))}var Qv=[0,50,100,150,200,250,300,350,400,450],Gf=4;function Kv(e){return(Array.isArray(e)?e:[e]).reduce((n,a)=>{if(typeof a!="string"||!a.trim())return n;let l=a.trim();return n.some(i=>i.toLowerCase()===l.toLowerCase())?n:[...n,l]},[])}function nS(e,t){return e.length===t.length&&e.every((n,a)=>n===t[a])}function Pf(e){return e.map(t=>t.trim().toLowerCase()).sort().join("|")}function qf(e){let t=e.initialData,n=Fu(e),a=!!(e.preloadReviewInventory&&!n),l=!!(e.preloadReviewInventory&&e.includeReviewProducts&&!e.compactEmbed),i=n?Number(e.resultCount)||12:100,r=n?!1:e.prioritiseCommercialProducts,o=wt(e.region),u=zf(t?.allDeals||t?.deals||[],o).filter(_=>P0(_,o)),c=wa(n?"date_desc":e.sort,!Or(e)),s=!!(e.priceRange&&e.priceRange!=="all")||!!(e.discountAmount&&e.discountAmount!=="0"&&e.discountAmount!=="all"),f=tl(t?.authorArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),d=tl(t?.authorInteractionArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),[m,v]=(0,N.useState)(()=>Uf(u,c,r)),[A,b]=(0,N.useState)(t?.totalDealCount??t?.allDeals?.length??t?.deals?.length??0),[h,g]=(0,N.useState)(t?.totalAuthorCount??t?.authors?.length??0),[p,y]=(0,N.useState)(!t),[C,R]=(0,N.useState)(!1),[T,M]=(0,N.useState)(!1),[w,D]=(0,N.useState)(!1),[k,se]=(0,N.useState)(t?.couponMap||{}),[I,j]=(0,N.useState)(f),[He,ze]=(0,N.useState)(f),[St,Ie]=(0,N.useState)(t?.tags||[]),[rn,Be]=(0,N.useState)(t?.tagCounts||{}),[Je,nt]=(0,N.useState)(t?.freeformTags||[]),[X,de]=(0,N.useState)(t?.freeformTagCounts||{}),[$e,Z]=(0,N.useState)(t?.brands||[]),[x,P]=(0,N.useState)(()=>{let _=t?.activeDealTag||e.query;return _&&_.toLowerCase()!=="everything"?_:null}),[Q,Vn]=(0,N.useState)(()=>Kv(t?.activeFreeformTags||t?.activeFreeformTag)),[jr,bi]=(0,N.useState)(f),[sc,ll]=(0,N.useState)(null),[at,Yr]=(0,N.useState)(!1),[il,Vr]=(0,N.useState)(""),[rl,Xr]=(0,N.useState)(""),[f1,g1]=(0,N.useState)(0),[Wt,dc]=(0,N.useState)(e.resultCount?parseInt(e.resultCount):12),[Xf,fc]=(0,N.useState)(!1),[m1,Qr]=(0,N.useState)(null),[gc,h1]=(0,N.useState)(!1),[mc,p1]=(0,N.useState)([0]),Kr=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`:""),hc=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}|age-${e.editorialMaxAgeMonths||"none"}`:""),y1=(0,N.useRef)(e.website||"tomsguide"),pc=(0,N.useRef)(e.website||"tomsguide"),Qf=(0,N.useRef)(u.length>0),Kf=(0,N.useRef)(null),ol=(0,N.useRef)(new Map),v1=(0,N.useRef)({activeDealTag:String(x||"").trim().toLowerCase(),freeformTags:Pf(Kv(t?.activeFreeformTags||t?.activeFreeformTag)),discountAmount:e.discountAmount,priceRange:e.priceRange}),Xn=(0,N.useRef)(!1),De=(0,N.useRef)(!1),Ai=(0,N.useRef)(!1),Zf=(_,oe,ne=at?il:e.authorHandle,we=at?rl:e.authorName)=>[e.website||"tomsguide",ne||"",we||"",wt(e.region),String(_||"").trim().toLowerCase(),Pf(oe),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),Wf=(_,oe)=>{let ne=v1.current;return!!(e.compactEmbed&&t?.brands?.length&&String(_||"").trim().toLowerCase()===ne.activeDealTag&&Pf(oe)===ne.freeformTags&&e.priceRange===ne.priceRange&&e.discountAmount===ne.discountAmount)},Zr=(_,oe)=>{let ne=ol.current.get(Zf(_,oe));if(ne){Z(ne);return}if(Wf(_,oe)){Z(t?.brands||[]);return}},ul=()=>Xn.current||n?void 0:e.productSelection;(0,N.useEffect)(()=>{ll(null)},[e.authorName,e.authorHandle]),(0,N.useLayoutEffect)(()=>{let _=e.website||"tomsguide";pc.current!==_&&(pc.current=_,v(()=>[]),j(()=>[]),ze(()=>[]),bi(()=>[]),Ie(()=>[]),Be({}),nt(()=>[]),de({}),Z(()=>[]),ol.current.clear(),se({}),Yr(!1),Vr(""),Xr(""),ll(null),P(null),Vn([]),g(0),b(0),M(!1),fc(!1),Qr(null),Ai.current=!1,R(!0),y(!0))},[e.website]),(0,N.useEffect)(()=>{e.compactEmbed||typeof document>"u"||setTimeout(()=>{document.dispatchEvent(new CustomEvent("processArticle"))},100)},[m,Wt,e.query,x,Q]),(0,N.useEffect)(()=>{e.resultCount&&(dc(parseInt(e.resultCount,10)||12),Qr(null))},[e.resultCount]),(0,N.useEffect)(()=>{Qr(null)},[x,Q,e.authorHandle,e.authorName,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands,e.sort]),(0,N.useEffect)(()=>{if(!t||!e.includeBuyingGuideProducts&&!e.includeReviewProducts||e.compactEmbed&&(De.current||e.refreshDealsOnViewport))return;let _=wt(e.region),oe=zf(t.allDeals||t.deals||[],_);if(_==="unavailable"){let It=oe.map(on=>(on.isBuyingGuideProduct||on.isReviewProduct)&&on.hawkModelName?{...on,hawkPricePending:!1}:on);ln(It,c,r),v(yn(It,ul(),c));return}let ne=al(oe,e.selectedBrands),we=Number(e.resultCount)||12,Ta=typeof navigator>"u"?void 0:navigator.connection,Ea=!Ta?.saveData&&!Ta?.effectiveType?.includes("2g")&&(!e.compactEmbed||!!e.warmInventory),Si=s?ne:t.reviewInventoryBaked?ne.slice(0,Wt+(Ea?we:0)):oe;if(!Si.some(It=>(It.isBuyingGuideProduct||It.isReviewProduct)&&It.hawkModelName))return;let sl=!0;return M(!0),vi(Si,_).then(It=>{if(!sl)return;let on=t.reviewInventoryBaked?lv(oe,It):It,Ir=al(on,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(lt=>(lt.isBuyingGuideProduct||lt.isReviewProduct)&&lt.hawkModelName?{...lt,hawkPricePending:!1}:lt);ln(Ir,c,r),v(yn(Ir,ul(),c)),Z(lt=>t?.brands?.length?lt:hf(lt,It))}).finally(()=>{sl&&M(!1)}),()=>{sl=!1}},[t,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,e.selectedBrands,e.discountAmount,e.priceRange,c,e.productSelection,Wt,e.resultCount,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,x,Q]),(0,N.useEffect)(()=>{let _=!0,oe=new AbortController,ne=Ai.current,we=!e.refreshDealsOnViewport&&Xv({activeDealTag:x,activeFreeformTag:Q[0]||null,clickedAuthorOverride:at,compactEmbed:e.compactEmbed,compactInventoryExplored:De.current,compactLoadRequested:gc,initialActiveDealTag:t?.activeDealTag,initialActiveFreeformTag:t?.activeFreeformTag,reviewInventoryBaked:t?.reviewInventoryBaked}),Ta=u.length>0,Ea=!!(n&&e.compactEmbed&&!De.current),Si=!!(Ea&&e.warmInventory&&I.length===0&&m.length>0),sl=!!(we||e.compactEmbed&&Ta&&I.length===0&&!at&&!gc&&!De.current&&!e.refreshDealsOnViewport&&(!n||!e.warmInventory));return!sl&&!ne&&!Si&&(R(!0),e.compactEmbed&&De.current&&v([])),(async()=>{D(!1),M(!1);let on=m.length>0||St.length>0||Je.length>0||$e.length>0,Ir=sl;try{if(!e.authorName&&!e.authorHandle){v([]),j([]),bi([]),Ie([]),nt([]),Z([]),ll(null),P(null),Vn([]),y(!0);return}let lt=at?il:e.authorHandle,Jr=at?rl:e.authorName,$r=`${e.website||"tomsguide"}|${lt||""}|${Jr||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`,yc=`${$r}|${e.compactEmbed&&x||""}|${e.compactEmbed?Q.join(","):""}|${e.compactEmbed&&De.current?"expanded":e.refreshDealsOnViewport?"viewport-refresh":"initial"}|lightweight-pages-${Ea?mc.join(","):"all"}|age-${e.editorialMaxAgeMonths||"none"}`,Jt=I,$f=St,U1=ev(Je,Q.length===1?Q[0]:null),eg=()=>({activeDealTag:x,activeFreeformTag:Q[0]||null,activeFreeformTags:Q,preserveFreeformTagSelection:!!(e.compactEmbed&&Q.length),authorHandle:lt,authorName:Jr,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,priceRange:e.priceRange,prioritiseCommercialProducts:r,productSelection:ul(),query:e.query,region:e.region,selectedArticleId:sc,selectedBrands:e.selectedBrands,sort:c,website:e.website}),tg=hc.current!==yc||Jt.length===0,Da=[],vc=!1,ng=(me,zt=!1)=>{if(!_||zt&&vc)return;let bn=al(me,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange});ln(bn,c,r);let Di=yn(bn,ul(),c);v(uc(Da,Di,c,r))};if(Ir){y(!1),R(!1);return}if(tg){let me=Kr.current.split("|")[0],zt=e.website||"tomsguide",bn=!!(Kr.current&&me!==zt);!ne&&!Si&&R(!!e.compactEmbed||!on),bn&&(Jt=[],$f=[],v(()=>[]),j(()=>[]),ze(()=>[]),bi(()=>[]),Ie(()=>[]),Be({}),nt(()=>[]),de({}),Z(()=>[]),se({}),Yr(!1),Vr(""),Xr(""),y(!0));let Di=Qf.current&&Kr.current===$r&&Jt.length===0&&!De.current;Qf.current=!1,!Di&&!on&&y(!0);let lo=Ba=>{if(!_||Ba.length===0)return;let fe=eg(),it=Cf(Ba,fe),{displayedDeals:io}=ic(it.targetArticles,fe,it.activeRegionCode,it.targetIso);io.length!==0&&(Da=io,v(Da),y(!1),e.includeReviewProducts&&Nf(it.targetArticles,e.website||"tomsguide",Math.min(Wt,Gf),c).then(()=>{if(!_||vc)return;let An=ic(it.targetArticles,fe,it.activeRegionCode,it.targetIso);Da=An.displayedDeals,v(Da);let xi=An.displayedDeals.filter(dt=>dt.isReviewProduct&&dt.hawkModelName).slice(0,Gf).map(dt=>String(dt.hawkModelName));vi(An.extractedDeals,it.activeRegionCode,void 0,Gf,xi,dt=>ng(dt,!0))}))};if(Jt=await _v({authorHandle:lt,authorName:Jr,fallbackAuthorName:e.authorName,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,articleCategory:e.compactEmbed&&x||void 0,articleTag:e.compactEmbed?U1:void 0,pageStarts:e.compactEmbed&&!e.warmInventory&&!De.current?[0]:void 0,reviewPageStarts:e.includeReviewProducts?Ea?mc:!e.compactEmbed||De.current?Qv:void 0:void 0,loadAllReviewPages:!Ea,throwOnFailure:!!(e.compactEmbed&&De.current),onBackgroundRefresh:Ba=>{if(!_||hc.current!==yc)return;let fe=tl(Ba,void 0,Number(e.editorialMaxAgeMonths)||0);j(fe),at||ze(fe),g1(it=>it+1)},onProgress:lo,signal:oe.signal,website:e.website}),!_)return;if(Jt=tl(Jt,void 0,Number(e.editorialMaxAgeMonths)||0),Kr.current=$r,hc.current=yc,Di&&Jt.length===0){y(!1);return}_&&(j(Jt),at||ze(Jt),R(!1))}let eo=eg(),G1=Cf(Jt,eo),{activeDealTag:xa,activeRegionCode:Ci,authorArticles:ag,activeFreeformTags:Ma,freeformTagCounts:lg,freeformTags:to,tagCounts:ig,tags:Ri,targetArticles:_a,targetIso:P1}=G1,Ti=e.compactEmbed&&x&&!xa?x:xa,Ei=e.compactEmbed&&Q.length>0&&Ma.length===0?Q:Ma,q1=Ri.length>0?Ri:Ti?[Ti]:Ri,F1=to.length>0?to:Ei.length>0?t?.freeformTags?.filter(me=>Ei.includes(me.handle))||[]:to,j1={...ig,...Ti&&!xa?{[Ti]:0}:{}},Y1={...lg,...Object.fromEntries(Ma.length===0?Ei.map(me=>[me,0]):[])},no=Zf(xa,Ma,lt,Jr),rg=[$r,Ci,xa||"",Ma.join(","),e.selectedBrands.join(","),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),dl=null,fl=null;if(!at){let me=Kf.current;if(me?.key===rg&&me.articleCount===_a.length)dl=me.deals.length,fl=me.authorCount;else{let zt=dv(_a,eo);dl=zt.deals.length,fl=zt.authorCount,Kf.current={articleCount:_a.length,authorCount:fl,deals:zt.deals,key:rg}}}$f=Ri;let Ht;_&&(Ie(q1),Be(j1),nt(F1),de(Y1)),e.includeReviewProducts&&await Nf(_a,e.website||"tomsguide",l?Math.min(_a.length,i):Wt,c);let{brands:bc,displayedDeals:Ac,extractedDeals:ao}=ic(_a,eo,Ci,P1),{merchants:V1,couponMap:wc,couponUrl:X1}=Yv(Ac,e.region);_&&se(wc);let Q1=me=>{!_||!Ht||(Ht={...Ht,couponMap:me},window.__AUTHOR_PRELOAD_DATA__=Ht,e.onDataLoaded&&e.onDataLoaded(Ht))};if(hv({couponMap:wc,couponUrl:X1,merchants:V1}).then(me=>{_&&(se(me),Q1(me))}),_){tg&&P(Ti),nS(Q,Ei)||Vn(Ei),bi(ag);let me=uc(Da,Ac,c,r);if(vc=!0,v(me),dl!==null){let zt=t?.totalDealCount||0,bn=Ea&&zt>dl;b(bn?zt:dl),g(bn?Math.max(t?.totalAuthorCount||0,fl||0):fl||0)}!ol.current.has(no)&&Wf(xa,Ma)&&ol.current.set(no,t?.brands||[]),Z(ol.current.get(no)||bc),y(!1),Ht=fv({allArticles:Jt,authorArticles:ag,bakeReviewInventory:a&&!e.compactEmbed,brands:bc,couponMap:wc,currentDealTag:xa,currentFreeformTags:Ma,displayedDeals:me,inventoryArticles:_a,options:eo,resultCount:e.resultCount,tagCounts:ig,tags:Ri,freeformTagCounts:lg,freeformTags:to,totalAuthorCount:fl??h,totalDealCount:dl??A}),window.__AUTHOR_PRELOAD_DATA__=Ht,e.onDataLoaded&&e.onDataLoaded(Ht)}if((e.includeBuyingGuideProducts||e.includeReviewProducts)&&Ci!=="unavailable"){let me=Wt,zt=l?ao.filter(fe=>fe.isReviewProduct&&fe.hawkModelName).slice(0,i).map(fe=>String(fe.hawkModelName)):[],bn=Ac.filter(fe=>(fe.isBuyingGuideProduct||fe.isReviewProduct)&&fe.hawkModelName).map(fe=>String(fe.hawkModelName));ao.some(fe=>(fe.isBuyingGuideProduct||fe.isReviewProduct)&&fe.hawkModelName)&&M(!0);let lo=vi(ao,Ci,void 0,s?void 0:e.includeReviewProducts?l?i:me:void 0,[...zt,...bn],ng).then(async fe=>{if(!_)return;let it=al(fe,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(dt=>(dt.isBuyingGuideProduct||dt.isReviewProduct)&&dt.hawkModelName?{...dt,hawkPricePending:!1}:dt);ln(it,c,r);let io=yn(it,ul(),c),An=uc(Da,io,c,r),xi=hf(bc,fe);if(ol.current.set(no,xi),v(An),Z(xi),s&&b(it.length),Ht){let dt=a&&!e.compactEmbed,og=l,ug=dt?ac(An,Number(e.resultCount)||12):og?An.slice(0,i):An,K1=og?await jv(ug):ug;if(!_)return;let Sc={...Ht,allDeals:K1,deals:An.slice(0,me),brands:xi,totalDealCount:s?it.length:Ht.totalDealCount};Ht=Sc,window.__AUTHOR_PRELOAD_DATA__=Sc,e.onDataLoaded&&e.onDataLoaded(Sc)}}).finally(()=>{_&&M(!1)}),Ba=ao.slice(me,me+(Number(e.resultCount)||12));e.includeReviewProducts&&e.warmInventory&&!s&&!ne&&Ba.some(fe=>fe.hawkModelName)&&lo.then(()=>{_&&vi(Ba,Ci)}),ne&&await lo}}catch(lt){_&&D(!0)}finally{_&&(y(!1),R(!1),fc(!1),Ai.current=!1)}})(),()=>{_=!1,oe.abort()}},[e.query,e.region,e.selectedBrands,e.website,e.resultCount,Wt,c,e.priceRange,e.discountAmount,x,Q,e.authorName,e.authorHandle,e.website,e.authorBioLength,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,s,a,l,i,r,n,mc,e.productSelection,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,e.editorialMaxAgeMonths,sc,at,il,rl,f1,gc]);let Wr=e.website||"tomsguide",st=pc.current!==Wr,Ra=(0,N.useMemo)(()=>st?[]:y1.current===Wr&&t?.authors?t.authors:Lr(He.length>0?He:I,Wr),[I,Wr,He,t?.authors,st]),b1=at?il:e.authorHandle,A1=at?rl:e.authorName,w1=Ra.find(_=>_.handle===b1||_.fullName===A1),cl=He.length>0?He:I,If=(0,N.useMemo)(()=>{if(cl.length===0)return Ra;let _=wt(e.region),oe=an(_),ne=hi(Pr(cl,x),Q),we=Sf(Ra,ne,{activeRegionCode:_,targetIso:oe,selectedBrands:e.selectedBrands,priceRange:e.priceRange,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website});return Yu(Ra,we)},[x,Q,Ra,cl,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands]),S1=(0,N.useMemo)(()=>{if(st)return[];if(cl.length===0&&t?.authors?.length||e.compactEmbed&&!x&&Q.length===0&&t?.authors?.length)return Ra;let _=wt(e.region),oe=an(_),ne=hi(Pr(cl,x),Q).filter(we=>mi([we],{activeRegionCode:_,targetIso:oe,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website}).length>0);return kr(If,ne)},[x,Q,cl,st,at,t?.authors?.length,e.compactEmbed,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,If,e.website]),Jf=(_,oe)=>{let ne=He.length>0?He:I.length>0?I:d;if(ne.length===0)return;let we=yv(ne,{authorHandle:_,authorName:oe,discountAmount:e.discountAmount,priceRange:e.priceRange,region:e.region,selectedBrands:e.selectedBrands,sort:c,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,prioritiseCommercialProducts:r,website:e.website,productSelection:void 0});ll(null),P(null),Vn([]),bi(we.authorArticles),Ie(we.tags),Be(we.tagCounts),nt(we.freeformTags),de(we.freeformTagCounts),Z(we.brands),v(we.deals),y(!1)},C1=()=>{!e.compactEmbed||!t||(v(yn(Uf(t.deals||t.allDeals||[],c,r),ul(),c)),Ie(t.tags||[]),Be(t.tagCounts||{}),nt(t.freeformTags||[]),de(t.freeformTagCounts||{}),Z(t.brands||[]),se(t.couponMap||{}),g(t.totalAuthorCount??t.authors?.length??0),b(t.totalDealCount??t.deals?.length??t.allDeals?.length??0))},R1=_=>{Xn.current=!0,De.current=!0,R(!0),at&&(il===_.handle||rl===_.fullName)?(e.compactEmbed&&t?C1():Jf(e.authorHandle,e.authorName),Yr(!1),Vr(""),Xr("")):(Jf(_.handle,_.fullName),Yr(!0),Vr(_.handle),Xr(_.fullName)),e.onQueryChange?.("")},T1=_=>{Xn.current=!0,De.current=!0,R(!0);let oe=x===_?null:_;Zr(oe,Q),P(oe),e.onQueryChange?.("")},E1=()=>{Xn.current=!0,De.current=!0,R(!0)},D1=()=>{Xn.current=!0,De.current=!0,R(!0),Zr(null,Q),P(null),e.onQueryChange?.("")},x1=_=>{Xn.current=!0,De.current=!0,R(!0);let oe=Q.some(ne=>ne.toLowerCase()===_.toLowerCase())?Q.filter(ne=>ne.toLowerCase()!==_.toLowerCase()):[...Q,_];Zr(x,oe),Vn(oe)},M1=()=>{Xn.current=!0,De.current=!0,R(!0),Zr(x,[]),Vn([])},_1=_=>{Xn.current=!0,De.current=!0,R(!0),ll(_)},B1=()=>{if(Ai.current)return;Ai.current=!0,fc(!0);let _=Wt+(e.resultCount?parseInt(e.resultCount,10):12);!!(n&&e.compactEmbed&&!De.current)&&I.length>0&&m.length<_&&p1(we=>{let Ta=Qv[we.length];return Ta===void 0?we:[...we,Ta]}),dc(we=>(Qr(we),we+(e.resultCount?parseInt(e.resultCount,10):12)));let ne=!!(t?.reviewInventoryBaked&&m.length>Wt);e.compactEmbed&&I.length===0&&!ne&&(R(!0),h1(!0))},wi=e.compactEmbed&&!e.refreshDealsOnViewport,N1=wi&&t?.tags?.length?t.tags:St,O1=wi&&t?.tags?.length?t.tagCounts||{}:rn,k1=wi&&!De.current&&t?.brands?.length?t.brands:$e,L1=wi&&t?.freeformTags?.length&&(!De.current||Q.length===1)?t.freeformTags:Je,H1=wi&&t?.freeformTags?.length&&(!De.current||Q.length===1)?t.freeformTagCounts||{}:X,z1=pv({enrichingBuyingGuides:T,error:w,loading:p,loadingMore:Xf,refreshingFeed:C});return{activeDealTag:x,activeFreeformTags:Q,airedaleBrands:st?[]:k1,airedaleTagCounts:st?{}:O1,airedaleTags:st?[]:N1,airedaleFreeformTagCounts:st?{}:H1,airedaleFreeformTags:st?[]:L1,allAuthorsList:S1,authorArticlesList:st?[]:jr,clickedAuthorOverride:at,couponMap:k,deals:st?[]:m,displayCount:Wt,error:w,enrichingBuyingGuides:T,effectiveAuthorProfile:st?void 0:w1,loading:p,loadingMore:Xf,loadMoreStartCount:m1,markProductSelectionInteracted:E1,hasMore:m.length>Wt||!!e.compactEmbed&&A>m.length,loadMore:B1,refreshingFeed:C,overriddenAuthorHandle:il,overriddenAuthorName:rl,selectedArticleId:sc,setActiveDealTag:P,clearDealTag:D1,clearFreeformTags:M1,selectArticle:_1,setDisplayCount:dc,setSelectedArticleId:ll,status:z1,toggleAuthorOverride:R1,toggleDealTag:T1,toggleFreeformTag:x1,totalAuthorCount:st?0:h,totalDealCount:st?0:A}}var aS=B(ft(),1);var Fr=B(ft(),1);function Zv(e){let[t,n]=(0,Fr.useState)(null),[a,l]=(0,Fr.useState)([]),[i,r]=(0,Fr.useState)(!1),[o,u]=(0,Fr.useState)(!1);return{close:()=>n(null),error:o,loading:i,merchant:t,open:async f=>{n(f),r(!0),u(!1),l([]);try{let d=Vv(f,e),m=await fetch(d.toString());if(!m.ok)throw new Error("API Error");l(mv(await m.json()))}catch(d){u(!0)}finally{r(!1)}},vouchers:a}}var je=B(O(),1);function lS(e){return new Set(e.map(t=>Array.isArray(t.authorName)?t.authorName[0]:t.authorName).map(t=>String(t||"").trim().toLowerCase()).filter(Boolean)).size}var iS=new Map,rS=()=>{};function Iv({data:e,editorBar:t,editorMode:n=!1,props:a,selectedDeals:l=iS,setSelectedDeals:i=rS}){let r=Zv(a.region),[o,u]=(0,Wv.useState)(new Set),c=p0[a.website||""]||"#1F69FF",s=a.backgroundColor?a.backgroundColor==="white"?"#ffffff":a.backgroundColor==="transparent"?"transparent":a.backgroundColor==="light_blue"?"#E7F0FF":void 0:void 0,f=Vu(a.authorHandle,a.authorName),d=Or(a),m=Fu(a),v=wa(m?"date_desc":a.sort,!d),A=!!(a.showReviewSort&&a.includeReviewProducts),b=a.showPriceDiscountFilters!==!1||A,h=!a.authorFullBleed,g=!e.clickedAuthorOverride,p=e.totalDealCount||e.deals.length,y=e.totalAuthorCount||lS(e.deals),C=e.status==="loading_inventory"||e.status==="refreshing_inventory"||e.status==="enriching_visible_cards",R=e.status==="loading_inventory"||(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards")&&e.deals.length===0,M=!!(a.showReviewSort&&a.includeReviewProducts&&(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards"))?"Loading and sorting available review products":e.status==="enriching_visible_cards"?"Adding live product images and prices":e.status==="refreshing_inventory"?"Updating products":`Loading ${a.website||"site"} authors and products`,w=j=>{e.markProductSelectionInteracted(),a.onBrandToggle?.(j)},D=j=>{e.markProductSelectionInteracted(),a.onBrandSelect?.(j)},k=j=>{e.markProductSelectionInteracted(),a.onPriceRangeChange?.(j)},se=j=>{e.markProductSelectionInteracted(),a.onDiscountAmountChange?.(j)},I=j=>{e.markProductSelectionInteracted(),a.onSortChange?.(j)};return(0,je.jsx)("div",{className:"tg-df-widget-host",style:{"--tg-df-blue":c.toUpperCase()==="#FFFFFF"?"#000000":c},"data-vizualizer-embed":"true","data-tg-df-full-bleed":a.authorFullBleed?"true":"false","data-tg-df-mobile-dropdowns":a.mobileDropdowns?"true":"false","data-tg-df-sticky-mobile-filters":a.stickyMobileFilters===!1?"false":"true",children:(0,je.jsxs)("div",{className:"tg-df-container article-body",style:a.backgroundColor?{backgroundColor:s}:void 0,children:[(a.showAuthorIdentity!==!1||a.showAuthorBio!==!1)&&(0,je.jsx)("div",{className:"tg-df-author-embed",style:{width:"100%",fontFamily:"inherit"},children:(0,je.jsx)("div",{className:"tg-df-author-section",style:{display:"block",opacity:1,overflow:"visible",background:"transparent",border:"none"},children:(0,je.jsx)(U0,{authorArticlesList:e.authorArticlesList,authorBioLength:a.authorBioLength,customBio:g?a.customBio:void 0,customHeaderKicker:a.customHeaderKicker,customHeaderTitle:a.customHeaderTitle,effectiveAuthorHandle:e.clickedAuthorOverride?e.overriddenAuthorHandle:a.authorHandle,effectiveAuthorName:e.clickedAuthorOverride?e.overriddenAuthorName:a.authorName,isReviewWidget:d,onBioChange:g?a.onBioChange:void 0,onHeaderKickerChange:a.onHeaderKickerChange,onHeaderTitleChange:a.onHeaderTitleChange,selectedProfile:e.effectiveAuthorProfile,showAuthorBio:a.showAuthorBio,showAuthorIdentity:a.showAuthorIdentity,showSocialButtons:a.showSocialButtons,stabilizeBio:f,authorCount:y,totalDealCount:p,website:a.website})})}),t,a.showCollectionsDropdown&&(0,je.jsx)(r0,{articles:e.authorArticlesList,authorHandle:a.authorHandle,authorName:a.authorName||a.author,onChange:e.selectArticle,selectedArticleId:e.selectedArticleId,shortenedHeadlines:a.shortenedHeadlines}),C&&(0,je.jsxs)("div",{role:"status","aria-live":"polite","aria-label":M,style:{alignItems:"center",display:"flex",justifyContent:"center",marginBottom:"16px",minHeight:"72px"},children:[(0,je.jsx)("span",{className:"tg-df-coupon-spinner","aria-hidden":"true",style:{borderWidth:"3px",height:"24px",width:"24px"}}),(0,je.jsxs)("span",{style:{color:"#4B5563",fontSize:"14px",marginLeft:"10px"},children:[M,"\u2026"]})]}),(0,je.jsx)(_0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,allAuthorsList:e.allAuthorsList,brands:a.brands,clickedAuthorOverride:e.clickedAuthorOverride,loading:e.loading,refreshing:e.refreshingFeed,onAuthorClick:e.toggleAuthorOverride,onBrandToggle:w,onFreeformTagClick:e.toggleFreeformTag,onTagClick:e.toggleDealTag,overriddenAuthorHandle:e.overriddenAuthorHandle,overriddenAuthorName:e.overriddenAuthorName,selectedBrands:a.selectedBrands,showAuthorRail:f&&a.showAuthorRail!==!1,showAuthorCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,website:a.website}),(0,je.jsx)(k0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,brands:a.brands,discountAmount:a.discountAmount,enabled:a.mobileDropdowns||h,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,onBrandSelect:D,onBrandToggle:w,onDiscountAmountChange:se,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,onPriceRangeChange:k,onReviewSortChange:I,onTagClear:e.clearDealTag,onTagClick:e.toggleDealTag,priceRange:a.priceRange,reviewSort:v,selectedBrands:a.selectedBrands||[],showCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),b&&(0,je.jsx)(L0,{airedaleBrands:e.airedaleBrands,airedaleTags:e.airedaleTags,discountAmount:a.discountAmount,hidden:!!e.selectedArticleId,onDiscountAmountChange:se,onPriceRangeChange:k,onReviewSortChange:I,priceRange:a.priceRange,reviewSort:v,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),(0,je.jsx)(i0,{articles:e.authorArticlesList,selectedArticleId:e.selectedArticleId}),(a.showCategoryRail!==!1||a.showFreeformTagRail!==!1||a.showBrandRail!==!1)&&(0,je.jsx)(a0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleTags:e.airedaleTags,freeformTags:e.airedaleFreeformTags,discountAmount:a.discountAmount,onBrandSelect:D,onBrandToggle:w,onDiscountAmountChange:se,onPriceRangeChange:k,onTagClear:e.clearDealTag,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,priceRange:a.priceRange,selectedBrands:a.selectedBrands||[]}),(0,je.jsx)(w0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,couponMap:e.couponMap,deals:e.deals,displayCount:e.displayCount,editorMode:n,error:e.error,expandedDealIds:o,hasMore:e.hasMore,hideHawkPrices:a.hideHawkPrices,loading:R,loadingMore:e.loadingMore,loadMoreStartCount:e.loadMoreStartCount,onDescriptionToggle:j=>u(He=>{let ze=new Set(He);return ze.has(j)?ze.delete(j):ze.add(j),ze}),onLoadMore:e.loadMore,onOpenVouchers:r.open,query:a.query,recentDealsOnly:!!(a.includeDeals&&!a.includeCollections&&!a.includeBuyingGuideProducts&&!a.includeReviewProducts),selectedBrands:a.selectedBrands,selectedDeals:l,setSelectedDeals:i,website:a.website}),(0,je.jsx)(G0,{error:r.error,loading:r.loading,merchant:r.merchant,onClose:r.close,vouchers:r.vouchers})]})})}var $v=B(O(),1),Jv=e=>{let t={...e,editorMode:!1},n=qf(t);return(0,$v.jsx)(Iv,{data:n,props:t})};var U={authorBioLength:"short",authorFullBleed:!0,authorHandle:"all-authors",authorName:"All authors",backgroundColor:"transparent",customBio:"",customHeaderKicker:void 0,customHeaderTitle:void 0,discountAmount:"0",editorMode:!1,editorialMaxAgeMonths:"12",includeBuyingGuideProducts:!0,includeCollections:!0,includeDeals:!0,includeReviewProducts:!1,mobileDropdowns:!0,stickyMobileFilters:!0,offerType:"",preloadReviewInventory:!1,lightweightReviewDelivery:!1,hideHawkPrices:!1,prioritiseCommercialProducts:!0,priceRange:"all",productSelection:"latest",query:"Everything",region:"auto",resultCount:"12",retailer:"",selectedBrands:[],showAuthorBio:!0,showAuthorCounters:!0,showAuthorIdentity:!0,showAuthorRail:!0,showBrandRail:!0,showCategoryRail:!0,showCollectionsDropdown:!1,showPriceDiscountFilters:!0,showReviewSort:!1,showSocialButtons:!0,showCountdown:!1,showHeaderDetails:!0,showFreeformTagRail:!0,sort:"date_desc",viewMode:"author",website:"whowhatwear",widgetSubtitle:"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.",widgetTitle:"Top Deals Handpicked by Our Editors"};function We(e,t){return typeof e=="string"?e:t}function Ae(e,t){return typeof e=="boolean"?e:t}function e1(e){let t=e||{},n=t.authorBioLength==="long"?"long":"short",a=t.productSelection==="mix"?"mix":"latest";return{...U,...t,authorBioLength:n,authorFullBleed:Ae(t.authorFullBleed,U.authorFullBleed),authorHandle:We(t.authorHandle,U.authorHandle),authorName:We(t.authorName,U.authorName),backgroundColor:We(t.backgroundColor,U.backgroundColor),customBio:We(t.customBio,U.customBio),customHeaderKicker:typeof t.customHeaderKicker=="string"?t.customHeaderKicker:void 0,customHeaderTitle:typeof t.customHeaderTitle=="string"?t.customHeaderTitle:void 0,discountAmount:We(t.discountAmount,U.discountAmount),editorMode:Ae(t.editorMode,U.editorMode),editorialMaxAgeMonths:We(t.editorialMaxAgeMonths,U.editorialMaxAgeMonths),includeBuyingGuideProducts:Ae(t.includeBuyingGuideProducts,U.includeBuyingGuideProducts),includeCollections:Ae(t.includeCollections,U.includeCollections),includeDeals:Ae(t.includeDeals,U.includeDeals),includeReviewProducts:Ae(t.includeReviewProducts,U.includeReviewProducts),mobileDropdowns:Ae(t.mobileDropdowns,U.mobileDropdowns),stickyMobileFilters:Ae(t.stickyMobileFilters,U.stickyMobileFilters),offerType:We(t.offerType,U.offerType),preloadReviewInventory:Ae(t.preloadReviewInventory,U.preloadReviewInventory),lightweightReviewDelivery:Ae(t.lightweightReviewDelivery,U.lightweightReviewDelivery),hideHawkPrices:Ae(t.hideHawkPrices,U.hideHawkPrices),prioritiseCommercialProducts:Ae(t.prioritiseCommercialProducts,U.prioritiseCommercialProducts),priceRange:We(t.priceRange,U.priceRange),productSelection:a,query:We(t.query,U.query),region:We(t.region,U.region),resultCount:We(t.resultCount,U.resultCount),retailer:We(t.retailer,U.retailer),selectedBrands:Array.isArray(t.selectedBrands)?t.selectedBrands.filter(l=>typeof l=="string"):[],showAuthorBio:Ae(t.showAuthorBio,U.showAuthorBio),showAuthorCounters:Ae(t.showAuthorCounters,U.showAuthorCounters),showAuthorIdentity:Ae(t.showAuthorIdentity,U.showAuthorIdentity),showAuthorRail:Ae(t.showAuthorRail,U.showAuthorRail),showBrandRail:Ae(t.showBrandRail,U.showBrandRail),showCategoryRail:Ae(t.showCategoryRail,U.showCategoryRail),showCollectionsDropdown:Ae(t.showCollectionsDropdown,U.showCollectionsDropdown),showPriceDiscountFilters:Ae(t.showPriceDiscountFilters,U.showPriceDiscountFilters),showReviewSort:Ae(t.showReviewSort,U.showReviewSort),showSocialButtons:Ae(t.showSocialButtons,U.showSocialButtons),showCountdown:Ae(t.showCountdown,U.showCountdown),showHeaderDetails:Ae(t.showHeaderDetails,U.showHeaderDetails),showFreeformTagRail:Ae(t.showFreeformTagRail,U.showFreeformTagRail),sort:We(t.sort,U.sort),viewMode:We(t.viewMode,U.viewMode),website:We(t.website,U.website),widgetSubtitle:We(t.widgetSubtitle,U.widgetSubtitle),widgetTitle:We(t.widgetTitle,U.widgetTitle)}}function t1(e,t={}){return{...e,brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}}function n1(e,t){try{window.hawk?.analytics?.freyr?.push({name:e,data:t}),window.dispatchEvent(new CustomEvent("hawk-analytics-update")),window.freyr?.cmd.push(()=>{window.freyr?.pushAndUpdate?.(e,t)})}catch{}}function a1(){window.dataLayer=window.dataLayer||[],window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.hawk=window.hawk||{},window.hawk.analytics=window.hawk.analytics||{},window.hawk.analytics.freyr=window.hawk.analytics.freyr||[],window.freyr=window.freyr||{cmd:[]},window.freyr.cmd=window.freyr.cmd||[];let e="https://freyr.futurecdn.net/freyr.js",t=window.location.hostname;if(!(window.navigator.webdriver||window.navigator.userAgent.includes("Headless"))&&!!t&&t!=="localhost"&&t!=="127.0.0.1"&&!t.includes("run.app")&&!document.querySelector(`script[src="${e}"]`)){let l=document.createElement("script");l.src=e,l.async=!0,document.head.appendChild(l)}}function oS(e){let t=Number.parseFloat(e.rawPrice||e.price)||null,n=Number.parseFloat(e.rawMsrp||e.msrp)||null;return{product:{primary:{id:e.externalProductId||e.id||e.matchId||null,name:e.productName||e.title||"",type:"deal",price:t,previousPrice:n,currency:e.isoCurrencyCode||e.currency||"USD",preorder:!1,labels:e.modelBrand||e.brand?[{type:"brand",value:e.modelBrand||e.brand}]:[],link:e.url||null,originalLink:e.originalLink||e.url||null,revenueId:e.revenueId||null,startTime:null,endTime:null,voucherCode:null,voucherAudience:null,voucherPercentageSaving:n&&t&&n>t?Math.round((1-t/n)*100):null,voucherMoneySaving:null,voucherType:null,offerExclusive:!1,offerScope:null,globalId:e.productKey||null,inStock:e.inStock!==!1,contractProvider:null,contractMinutes:null,contractTexts:null,contractData:null,contractLength:null,contractMonthlyPrice:null,contractCurrency:e.isoCurrencyCode||e.currency||"USD"}},merchant:{id:e.merchantId||null,name:e.merchant||"Retailer",url:e.merchantUrl||null,network:e.merchantNetwork||null},model:{id:e.modelId||null,brand:e.modelBrand||e.brand||null,name:e.productName||e.title||"",parent:e.modelParent||null}}}var uS=new Set(["subid1","ascsubtag","clickref","u1"]);function cS(e){return e.match(/(?:^|[-_])(\d{10,})(?=$|[-_])/)?.[1]||null}function sS(e){let t=new Set,n=a=>{if(!a||t.has(a))return null;t.add(a);let l;try{l=new URL(a)}catch{return null}for(let[i,r]of l.searchParams)if(uS.has(i.toLowerCase())){let o=cS(r);if(o)return o}for(let i of l.searchParams.values())if(/^https?:\/\//i.test(i)){let r=n(i);if(r)return r}return null};return n(e)}function l1({areaClicked:e,clickType:t,deals:n,index:a,queryName:l}){let i={event:"hawkEvent",category:"Affiliates",affiliate:{action:{type:t,id:"author-widget",event:t==="appeared"?"viewed":"Click from",timestamp:Date.now()},component:{flag:"Editor",product:"deals",category:"Signal Deal Finder Author widget",type:t==="appeared"?"review":"signal product",label:l||n[0]?.productName||n[0]?.title||"",index:a??-1,linkCount:n.length,blockLayout:"",areaClicked:e}},products:n.slice(0,20).map(oS),reviews:[],_clear:!0,"gtm.uniqueEventId":Date.now()%1e4};n1("hawkEvent",i)}function i1(e,t){e.length&&l1({areaClicked:"",clickType:"appeared",deals:e,index:null,queryName:t})}function r1(e,t){if(e?.deals?.length)return e.deals;let n=Number(t)||12;return e?.allDeals?.slice(0,n)||[]}function o1(e){e.addEventListener("click",t=>{let n=t.target;if(!(n instanceof Element))return;let a=n.closest("a[data-fcaw-affiliate-link][href], a.hawk-affiliate-link-deal-widget[href], a.hawk-affiliate-link-container[href], a.hawk-affiliate-link-deal-button[href]"),l=n.closest(".tg-df-card"),i=!!(!a?.dataset.fcawRevenueId&&(a?.hasAttribute("data-hl-processed")||a?.hasAttribute("data-fcaw-hawklinks-requested")));a&&l&&!i&&l1({areaClicked:"Signal Product Card",clickType:"retailer",deals:[{brand:l.dataset.brand,currency:l.dataset.currency,id:l.dataset.dealId,merchant:a.dataset.merchant||l.dataset.merchant,merchantId:a.dataset.merchantId||l.dataset.merchantId,modelId:a.dataset.modelId||l.dataset.modelId,productKey:a.dataset.productKey||l.dataset.productKey,rawMsrp:l.dataset.previousPrice,rawPrice:l.dataset.price,originalLink:a.dataset.fcawOriginalLink||a.href,revenueId:a.dataset.fcawRevenueId||sS(a.href),title:l.dataset.productName,url:a.href}],index:Array.from(e.querySelectorAll(".tg-df-card")).indexOf(l)});let r=n.closest('button, select, [role="button"]');r&&n1("elementInteraction",{element:{action:"click",id:r.id||void 0,class:r.className||void 0,name:r.getAttribute("name")||r.getAttribute("aria-label")||void 0,text:r.textContent?.trim()||void 0,label:r.getAttribute("aria-label")||void 0}})})}var Vf=B(O(),1),dS='fc-author-commerce-widget[data-fcaw-version="1"]',fS="(max-width: 599px)",gS=600,mS='[class*="membership-expandable-banner"]',hS=/^jump\s+to\b/i,jf="data-fcaw-jump-navigation-suppressed",pS=50,yS=1e4,vS=["[data-sticky-header]","[data-header-sticky]",'[role="banner"]',".navigation__container",".site-header",".main-header",".header__container",'[class*="membership-expandable-banner"] [class*="skinny-banner"]','[class*="membership-expandable-banner"] [id="skinnyBanner"]',"nav","header"].join(","),bS=`  :host {    display: block !important;    width: 100% !important;    min-width: 0 !important;    max-width: none !important;    isolation: isolate !important;    contain: style !important;  }  :host([data-fcaw-full-bleed="true"]) {    width: min(      1200px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1200px !important;    margin-left: var(      --fcaw-full-bleed-offset,      calc(50% - min(600px, 50vw))    ) !important;    margin-right: 0 !important;    position: relative !important;  }  :host([data-fcaw-full-bleed="true"]) #tg-df-spreadsheet-filters {    width: min(      1500px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1500px !important;    margin-left: calc(      (        100% -        min(1500px, var(--fcaw-viewport-width, 100vw))      ) / 2    ) !important;    margin-right: 0 !important;  }  :host, :host *, :host *::before, :host *::after {    box-sizing: border-box;  }`,Ff=new WeakMap;function AS(){if(document.querySelector("style[data-fcaw-jump-navigation-protection]"))return;let e=document.createElement("style");e.setAttribute("data-fcaw-jump-navigation-protection",""),e.textContent=`    [${jf}="true"] {      opacity: 0 !important;      pointer-events: none !important;      visibility: hidden !important;    }  `,document.head.appendChild(e)}function wS(){let e=Array.from(document.querySelectorAll("span, p, div, strong, b")).filter(n=>n.childElementCount===0&&hS.test(n.textContent?.trim()||"")),t=new Set;for(let n of e)for(let a=n.parentElement;a&&a!==document.body;a=a.parentElement)if(getComputedStyle(a).position==="sticky"){t.add(a);break}return[...t]}function SS(e,t,n){let a=Ff.get(e)||new Set;n?a.add(t):a.delete(t),a.size>0?(Ff.set(e,a),e.setAttribute(jf,"true")):(Ff.delete(e),e.removeAttribute(jf))}function CS(e){if(e.dataset.fcawFullBleed!=="true"||typeof IntersectionObserver>"u")return;let t=wS().filter(a=>!a.contains(e));if(t.length===0)return;AS(),new IntersectionObserver(([a])=>{t.forEach(l=>SS(l,e,a.isIntersecting))},{threshold:0}).observe(e)}function RS({host:e,initialData:t,initialProps:n}){let[a]=(0,Lt.useState)(d1),l=DS(t,a),[i,r]=(0,Lt.useState)(n.query),[o,u]=(0,Lt.useState)(n.selectedBrands),[c,s]=(0,Lt.useState)(n.priceRange),[f,d]=(0,Lt.useState)(n.discountAmount),[m,v]=(0,Lt.useState)(n.sort),[A,b]=(0,Lt.useState)(!1),h=!!(A&&n.compactEmbed&&n.includeDeals!==!1),g=(0,Lt.useRef)(!1);return(0,Lt.useEffect)(()=>{let p=()=>{g.current||(g.current=!0,i1(r1(l,n.resultCount),n.query))};if(typeof IntersectionObserver>"u"){p();return}let y=new IntersectionObserver(([C])=>{C?.isIntersecting&&(p(),y.disconnect())},{threshold:.1});return y.observe(e),()=>y.disconnect()},[e,l,n.query]),(0,Lt.useEffect)(()=>{if(typeof IntersectionObserver>"u"){b(!0);return}let p=new IntersectionObserver(([y])=>{y?.isIntersecting&&(b(!0),p.disconnect())},{rootMargin:"800px 0px"});return p.observe(e),()=>p.disconnect()},[e]),(0,Vf.jsx)(Jv,{...n,region:a||"unavailable",initialData:l,warmInventory:A,refreshDealsOnViewport:h,query:i,selectedBrands:o,priceRange:c,discountAmount:f,sort:m,editorMode:!1,onQueryChange:r,onBrandSelect:u,onBrandToggle:p=>u(y=>y.includes(p)?y.filter(C=>C!==p):[...y,p]),onPriceRangeChange:s,onDiscountAmountChange:d,onSortChange:v})}function TS(e){try{let t=document.cookie.match(new RegExp(`(?:^|;\\s*)${e}=([^;]*)`));return t?decodeURIComponent(t[1]):void 0}catch{return}}function cc(e){let n=String(e||"").trim().toUpperCase().replace("_","-").split("-").at(-1);return n==="UK"?"GB":["US","GB","AU","CA","DE","FR","IT","ES","NL"].includes(n||"")?n:void 0}function d1(){let e=new URLSearchParams(window.location.search).get("area");return cc(e)||cc(TS("FTR_Country_Code"))||cc(document.documentElement.getAttribute("data-locale"))||cc(window.navigator.language)}function u1(e,t){let n=e.querySelector(t);if(n?.textContent)try{return JSON.parse(n.textContent)}catch(a){console.warn("Author widget configuration could not be parsed.",a);return}}function ES(e){return e?.reviewInventoryFormat!==nv||!e.allDeals?e:{...e,allDeals:av(e.allDeals)}}function DS(e,t){let n=t?e?.regionalDealManifests?.[t]:void 0;if(!n)return e;let a=e?.regionalDealRailData?.[t];return{...e,allDeals:void 0,deals:n,...a}}function c1(e){e.querySelectorAll("a[href]").forEach(t=>{(t.hasAttribute("data-fcaw-affiliate-link")||t.classList.contains("hawk-affiliate-link-deal-widget")||t.classList.contains("hawk-affiliate-link-container")||t.classList.contains("hawk-affiliate-link-deal-button"))&&(t.rel="sponsored nofollow noopener")})}function xS(e){let t=e.closest(".tg-df-card"),n=t?.dataset.fcawRevenueId||e.dataset.fcawRevenueId;if(n)return n;let a=[window.location.href,t?.dataset.productName||"",t?.dataset.merchant||"",t?.dataset.modelId||"",new Date().toDateString(),"tomsguide"].join("|"),l=0;for(let r=0;r<a.length;r+=1)l=(l<<5)-l+a.charCodeAt(r),l|=0;let i=String(Math.abs(l));for(;i.length<19;)l=(l<<5)-l+i.length,l|=0,i+=String(Math.abs(l));return i=i.slice(0,19),t&&(t.dataset.fcawRevenueId=i),i}function MS(e){let t=e.dataset.fcawOriginalLink||e.href;if(!t.includes("hawk-custom-tracking"))return!1;let n=d1();if(!n)return!1;let a=xS(e);return e.dataset.fcawOriginalLink=t,e.dataset.fcawRevenueId=a,e.href=t.replaceAll("hawk-custom-tracking",`tomsguide-${n.toLowerCase()}-${a}`),e.setAttribute("data-fcaw-hawklinks-requested","true"),!0}function _S(){return!!window.hawklinks?.version}function BS(e){let t=!1,n,a,l=()=>Array.from(e.querySelectorAll(".article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-widget[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-container[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-button[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested])")),i=()=>{t=!1;let u=l();if(u.length===0)return;let c=u.filter(s=>!MS(s));if(c.length!==0){if(!_S()){let s=Date.now();a??=s,!n&&s-a<yS&&(n=window.setTimeout(()=>{n=void 0,r()},pS));return}a=void 0,c.forEach(s=>s.setAttribute("data-fcaw-hawklinks-requested","true")),document.dispatchEvent(new CustomEvent("processArticle",{detail:{element:e}}))}},r=()=>{t||(t=!0,window.setTimeout(i,0))},o=new MutationObserver(r);return o.observe(e,{attributes:!0,attributeFilter:["href"],childList:!0,subtree:!0}),r(),()=>{o.disconnect(),n&&window.clearTimeout(n)}}function NS(e){if(e.dataset.fcawFullBleed!=="true")return;let t=()=>{let n=document.documentElement.clientWidth||window.innerWidth,a=Math.min(1200,n),l=Math.max(0,(n-a)/2),i=e.parentElement?.getBoundingClientRect().left||0;e.style.setProperty("--fcaw-full-bleed-offset",`${l-i}px`),e.style.setProperty("--fcaw-viewport-width",`${n}px`)};t(),window.addEventListener("resize",t,{passive:!0}),typeof ResizeObserver<"u"&&e.parentElement&&new ResizeObserver(t).observe(e.parentElement)}function OS(e){let t=window.matchMedia(fS),n=!1,a=new Set,l=new Map,i,r=()=>t.matches||e.getBoundingClientRect().width<gS,o=()=>{n||(n=!0,window.requestAnimationFrame(s))},u=()=>{if(typeof MutationObserver>"u")return;let f=new Set(Array.from(document.querySelectorAll(mS)));l.forEach((d,m)=>{f.has(m)&&m.isConnected||(d.disconnect(),l.delete(m))}),f.forEach(d=>{if(l.has(d))return;let m=new MutationObserver(o);m.observe(d,{attributes:!0,attributeFilter:["class","style"],childList:!0,subtree:!0}),l.set(d,m)})},c=f=>{let d=new Set(f);a.forEach(m=>{d.has(m)||(i?.unobserve(m),m.removeEventListener("transitionend",o),a.delete(m))}),f.forEach(m=>{a.has(m)||(i?.observe(m),m.addEventListener("transitionend",o),a.add(m))})},s=()=>{if(n=!1,u(),!r()){c([]),e.style.removeProperty("--fcaw-mobile-sticky-offset");return}let f=Number.parseFloat(getComputedStyle(e).getPropertyValue("--fcaw-publisher-sticky-offset"));if(Number.isFinite(f)&&f>=0){c([]),e.style.setProperty("--fcaw-mobile-sticky-offset",`${f}px`);return}let d=Array.from(document.querySelectorAll(vS)).filter(v=>{if(v.contains(e))return!1;let A=getComputedStyle(v).position;return A==="fixed"||A==="sticky"});c(d);let m=d.reduce((v,A)=>{let b=A.getBoundingClientRect();return b.top>2||b.bottom<=0||b.height<=0||b.height>window.innerHeight*.5?v:Math.max(v,b.bottom)},0);e.style.setProperty("--fcaw-mobile-sticky-offset",`${Math.ceil(m)}px`)};return typeof ResizeObserver<"u"&&(i=new ResizeObserver(o),i.observe(e)),s(),window.addEventListener("scroll",o,{capture:!0,passive:!0}),window.addEventListener("resize",o,{passive:!0}),t.addEventListener?.("change",o),()=>{window.removeEventListener("scroll",o,!0),window.removeEventListener("resize",o),t.removeEventListener?.("change",o),i?.disconnect(),a.forEach(f=>f.removeEventListener("transitionend",o)),a.clear(),l.forEach(f=>f.disconnect()),l.clear()}}function kS(e){if(e.dataset.fcawEnhanced==="true")return;let t=u1(e,"script[data-fcaw-config]");if(!t)return;let n={...t1(e1(t),{brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}),compactEmbed:t.compactEmbed,editorMode:!1,warmInventory:t.warmInventory},a=u1(e,"script[data-fcaw-preload]"),l=ES(a),i=e.querySelector("[data-fcaw-fallback]");if(!i)return;NS(e),CS(e),n.stickyMobileFilters!==!1&&OS(e),c1(i);let r=e.shadowRoot||e.attachShadow({mode:"open"}),o=e.querySelector(":scope > style[data-fcaw-host-protection]");if(o&&r.appendChild(o),!r.querySelector("style[data-fcaw-shadow-protection]")){let c=document.createElement("style");c.setAttribute("data-fcaw-shadow-protection",""),c.textContent=bS,r.appendChild(c)}i.querySelectorAll(":scope > style").forEach(c=>{r.appendChild(c)});let u=document.createElement("div");for(u.setAttribute("data-fcaw-mount","");i.firstChild;)u.appendChild(i.firstChild);i.remove(),r.appendChild(u),e.dataset.fcawEnhanced="true",a1(),e.dataset.fcawAnalyticsReady="true",o1(r),BS(r),(0,s1.createRoot)(u).render((0,Vf.jsx)(RS,{host:e,initialData:l,initialProps:n})),window.setTimeout(()=>c1(r),0)}function Yf(){document.querySelectorAll(dS).forEach(kS)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Yf,{once:!0}):Yf();new MutationObserver(Yf).observe(document.documentElement,{childList:!0,subtree:!0});})();/*! Bundled license information:react/cjs/react.production.js:  (**   * @license React   * react.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)scheduler/cjs/scheduler.production.js:  (**   * @license React   * scheduler.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom.production.js:  (**   * @license React   * react-dom.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom-client.production.js:  (**   * @license React   * react-dom-client.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react/cjs/react-jsx-runtime.production.js:  (**   * @license React   * react-jsx-runtime.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)*/</script></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><h2 class="article-body__section" id="section-prime-day-gaming-mouse-deals-in-the-uk"><span>Prime Day gaming mouse deals in the UK</span></h2><h2 id="where-are-the-best-prime-day-gaming-keyboard-mouse-and-controller-deals-in-the-uk">Where are the best Prime Day gaming keyboard, mouse, and controller deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=gaming+mice&crid=LB80KGTDLNUC&sprefix=gaming+mice%2Caps%2C142&ref=nb_sb_noss_1" target="_blank">Big discounts on top-brand gaming mice</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/peripherals/mice/gaming-mice" target="_blank">Over 100 gaming mice to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/search?q=gaming+mice" target="_blank">Gaming mice from just £18</a></li><li><strong>Box: </strong><a href="https://box.co.uk/gaming-mice" target="_blank">Gaming mice from Asus, Logitech, and Razer</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/search?q=gaming%20mice" target="_blank">Mice from as little as £20</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/gaming-mice/?clickOrigin=searchbar:search:term:gaming+mice" target="_blank">Good prices on budget to high-end mice</a></li></ul><div class="product"><a data-dimension112="8f407f3c-bb39-11f1-8991-4f2d86e6f914" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="£19.99" href="https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1401px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qgFqUinn2HCKHEThJ47QpC" name="1636734797.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1401" height="1401" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/" target="_blank" rel="nofollow" data-dimension112="8f407f3c-bb39-11f1-8991-4f2d86e6f914" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="£19.99">G203 | Wired: was £30.99 now £19.99</a></strong><br>Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.</p><p><strong>Key specs: Wired | 8,000 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/" target="_blank" rel="nofollow" data-dimension112="8f407f3c-bb39-11f1-8991-4f2d86e6f914" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="£19.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407fa0-bb39-11f1-8ef1-07da27d3dfb9" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="£19.99" href="https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:212px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="krHdzSvvW5EskC6Keg74P9" name="1700740513.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9-1920-80.jpg" mos="" align="middle" fullscreen="" width="212" height="212" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ" target="_blank" rel="nofollow" data-dimension112="8f407fa0-bb39-11f1-8ef1-07da27d3dfb9" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="£19.99">G305 Lightspeed | Wireless: was £27.99 now £19.99</a></strong><br>The Logitech G305 Lightspeed is our<a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank"> favorite wireless budget mouse</a>—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills in time for the holidays.</p><p><strong>Key specs: Wireless | 12,000 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ" target="_blank" rel="nofollow" data-dimension112="8f407fa0-bb39-11f1-8ef1-07da27d3dfb9" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="£19.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f408004-bb39-11f1-8fae-d191715af846" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="£22.01" href="https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="SaXBHtPWoMGvzcyvsLNQQX" name="1698934268.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/" target="_blank" rel="nofollow" data-dimension112="8f408004-bb39-11f1-8fae-d191715af846" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="£22.01">G502 Hero | Wired: was £37.79 now £22.01</a></strong><br>This is a tried and tested Logitech gaming mouse, with an astonishing amount of customisation potential. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customisable buttons with onboard memory, and even comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. The two main buttons use mechanical switch tensioning to make every click feel satisfying, and the programmable RGB lighting finishes off this comprehensive package of gaming mouse goodness.</p><p><strong>Key specs: Wired | 25,600 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/" target="_blank" rel="nofollow" data-dimension112="8f408004-bb39-11f1-8fae-d191715af846" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="£22.01">View Deal</a></p></div><div class="product"><a data-dimension112="8f408068-bb39-11f1-a3a5-2fe33575d15c" data-action="Deal Block" data-label="Aerox 3 | Wireless" data-dimension48="Aerox 3 | Wireless" data-dimension25="£69.97" href="https://www.amazon.co.uk/SteelSeries-Aerox-Wireless-TrueMove-Optical/dp/B0GNMGXRF8/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1433px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="43md8LJJA69Nb4NXj4Aq6f" name="1790601815.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/43md8LJJA69Nb4NXj4Aq6f-1920-80.jpg" mos="" align="middle" fullscreen="" width="1433" height="1433" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/SteelSeries-Aerox-Wireless-TrueMove-Optical/dp/B0GNMGXRF8/?th=1" target="_blank" rel="nofollow" data-dimension112="8f408068-bb39-11f1-a3a5-2fe33575d15c" data-action="Deal Block" data-label="Aerox 3 | Wireless" data-dimension48="Aerox 3 | Wireless" data-dimension25="£69.97">Aerox 3 | Wireless: was £99.99 now £69.97</a></strong><br>The SteelSeries Aerox 3 might be lightweight with its honeycombed design, but it's certainly not light on features. With a 200-hour battery life, dual connectivity, and AquaBarrier protection to ensure water, dust and dirt resistance, this is a mouse designed to take some abuse and keep on trucking.</p><p><strong>Key specs: Wireless | 18,000 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/SteelSeries-Aerox-Wireless-TrueMove-Optical/dp/B0GNMGXRF8/?th=1" target="_blank" rel="nofollow" data-dimension112="8f408068-bb39-11f1-a3a5-2fe33575d15c" data-action="Deal Block" data-label="Aerox 3 | Wireless" data-dimension48="Aerox 3 | Wireless" data-dimension25="£69.97">View Deal</a></p></div><div class="product"><a data-dimension112="8f4080cc-bb39-11f1-aa32-7f104278d10e" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="£79.99" href="https://www.amazon.co.uk/Logitech-Lightspeed-Left-Handed-Customisable-Switchable-Black/dp/B0DBZGCQHX/ref=sr_1_5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1206px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="8LsAaks2QtDi5D9rVtv4Yc" name="1781520515.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8LsAaks2QtDi5D9rVtv4Yc-1920-80.jpg" mos="" align="middle" fullscreen="" width="1206" height="1206" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Lightspeed-Left-Handed-Customisable-Switchable-Black/dp/B0DBZGCQHX/ref=sr_1_5" target="_blank" rel="nofollow" data-dimension112="8f4080cc-bb39-11f1-aa32-7f104278d10e" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="£79.99">G Pro 2 Lightspeed | Wireless: was £119.99 now £79.99</a></strong><br>A great 44K DPI sensor with an ambidextrous shape, the G Pro was our first love before the Superlight showed up. It's still a wicked shape and plenty capable for gaming. This one may drop further as while it is a good price today, it has been a touch cheaper in recent months.</p><p><strong>Key specs: Ambidextrous | 44K DPI | Wireless</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Lightspeed-Left-Handed-Customisable-Switchable-Black/dp/B0DBZGCQHX/ref=sr_1_5" target="_blank" rel="nofollow" data-dimension112="8f4080cc-bb39-11f1-aa32-7f104278d10e" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="£79.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/best-prime-day-gaming-mouse-deals/</link>
                                                                            <description>
                            <![CDATA[ These Big Deal Days could deliver some serious peripheral discounts. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DpQ8P8QRZKyquhjyAvtzVT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Q8oSk3zQUGsBXY2zk6PGek-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 13:33:10 +0000</pubDate>                                                                                                                                <updated>Tue, 29 Sep 2026 08:56:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Q8oSk3zQUGsBXY2zk6PGek-1920-80.jpg">
                                                            <media:credit><![CDATA[Logitech]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logitech gaming mouse on a Prime Day background]]></media:description>                                                            <media:text><![CDATA[Logitech gaming mouse on a Prime Day background]]></media:text>
                                <media:title type="plain"><![CDATA[Logitech gaming mouse on a Prime Day background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Q8oSk3zQUGsBXY2zk6PGek-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>To paraphrase Wang Chung, we are in our Big Deal Days, love. With prices going crazy on PCs and laptops, because of the price of memory and GPUs, peripherals are one place where there should be good discounts, so we're hoping for some good Prime Day gaming mice deals this season. Amazon's October Prime Day is rolling around next week, with the event starting on Tuesday and running through until the end of play Wednesday. As always, however, every other retailer is jumping on the discounts bandwagon and timing a sale to coincide with Mr. Bezos' own event.</p><p>👉<a href="https://www.amazon.com/s?k=gaming+mice&crid=2J6G5VPFKFEZ6&sprefix=gaming+mice%2Caps%2C210&ref=nb_sb_noss_1" target="_blank"><strong>ALL of Amazon's gaming mice deals</strong></a>👈<br><strong>👉</strong><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>OUR favorite Prime Day PC gaming deals</strong></a><strong>👈</strong></p><p>We're PC gamers, so the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a> are our bread and butter, we spend a lot of time through the year testing the latest mice and the latest tech, so check out our guide to get an idea of what might be the right one for you. In the meantime, though, there are still plenty of tempting options below.</p><section class="article__schema-question"><h3>When is October Prime Day 2026?</h3><article class="article__schema-answer"><p>Amazon's October Prime Day, AKA Big Deal Days, starts on <strong>October 6</strong>, and runs though until the end of <strong>October 7</strong>. The deals are rolling in before then, though, and will be spread out across various retailers following Amazon's lead.</p></article></section><h2 id="where-to-find-the-best-prime-day-gaming-mice-deals">Where to find the best Prime Day gaming mice deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=gaming+mice&crid=2J6G5VPFKFEZ6&sprefix=gaming+mice%2Caps%2C210&ref=nb_sb_noss_1" target="_blank"><strong>All the gaming mice you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=gaming+mice" target="_blank">Speedy gaming mice, superb savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?id=pcat17071&st=gaming%20mice" target="_blank">Big name meeces with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/Gaming-Mouse/SubCategory/ID-3527?cm_sp=Cat_Keyboard-Mice_3-_-VisNav-_-Gaming-Mice" target="_blank">Big savings on big brand gaming mice</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-1bec2uw *:not(svg):not(path) { box-sizing: border-box; }    #widget-1bec2uw h1, #widget-1bec2uw p, #widget-1bec2uw h3 { margin: 0; line-height: normal; }    body { margin: 0; background: transparent; font-family: ui-sans-serif, system-ui, sans-serif; }  @supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))) {  *, ::before, ::after, ::backdrop { --tw-translate-x: 0; --tw-translate-y: 0; --tw-translate-z: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scale-z: 1; --tw-rotate-x: initial; --tw-rotate-y: initial; --tw-rotate-z: initial; --tw-skew-x: initial; --tw-skew-y: initial; --tw-scroll-snap-strictness: proximity; --tw-space-y-reverse: 0; --tw-space-x-reverse: 0; --tw-divide-y-reverse: 0; --tw-border-style: solid; --tw-gradient-position: initial; --tw-gradient-from: #0000; --tw-gradient-via: #0000; --tw-gradient-to: #0000; --tw-gradient-stops: initial; --tw-gradient-via-stops: initial; --tw-gradient-from-position: 0%; --tw-gradient-via-position: 50%; --tw-gradient-to-position: 100%; --tw-leading: initial; --tw-font-weight: initial; --tw-tracking: initial; --tw-ordinal: initial; --tw-slashed-zero: initial; --tw-numeric-figure: initial; --tw-numeric-spacing: initial; --tw-numeric-fraction: initial; --tw-shadow: 0 0 #0000; --tw-shadow-color: initial; --tw-shadow-alpha: 100%; --tw-inset-shadow: 0 0 #0000; --tw-inset-shadow-color: initial; --tw-inset-shadow-alpha: 100%; --tw-ring-color: initial; --tw-ring-shadow: 0 0 #0000; --tw-inset-ring-color: initial; --tw-inset-ring-shadow: 0 0 #0000; --tw-ring-inset: initial; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-outline-style: solid; --tw-blur: initial; --tw-brightness: initial; --tw-contrast: initial; --tw-grayscale: initial; --tw-hue-rotate: initial; --tw-invert: initial; --tw-opacity: initial; --tw-saturate: initial; --tw-sepia: initial; --tw-drop-shadow: initial; --tw-drop-shadow-color: initial; --tw-drop-shadow-alpha: 100%; --tw-drop-shadow-size: initial; --tw-backdrop-blur: initial; --tw-backdrop-brightness: initial; --tw-backdrop-contrast: initial; --tw-backdrop-grayscale: initial; --tw-backdrop-hue-rotate: initial; --tw-backdrop-invert: initial; --tw-backdrop-opacity: initial; --tw-backdrop-saturate: initial; --tw-backdrop-sepia: initial; --tw-duration: initial; --tw-ease: initial; }}#widget-1bec2uw, :host { --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --color-red-50: oklch(97.1% .013 17.38); --color-red-100: oklch(93.6% .032 17.717); --color-red-400: oklch(70.4% .191 22.216); --color-red-500: oklch(63.7% .237 25.331); --color-red-600: oklch(57.7% .245 27.325); --color-red-700: oklch(50.5% .213 27.518); --color-orange-50: oklch(98% .016 73.684); --color-orange-600: oklch(64.6% .222 41.116); --color-orange-700: oklch(55.3% .195 38.402); --color-amber-50: oklch(98.7% .022 95.277); --color-amber-600: oklch(66.6% .179 58.318); --color-amber-700: oklch(55.5% .163 48.998); --color-yellow-50: oklch(98.7% .026 102.212); --color-yellow-300: oklch(90.5% .182 98.111); --color-yellow-500: oklch(79.5% .184 86.047); --color-yellow-600: oklch(68.1% .162 75.834); --color-yellow-700: oklch(55.4% .135 66.442); --color-yellow-800: oklch(47.6% .114 61.907); --color-lime-700: oklch(53.2% .157 131.589); --color-green-50: oklch(98.2% .018 155.826); --color-green-100: oklch(96.2% .044 156.743); --color-green-400: oklch(79.2% .209 151.711); --color-green-500: oklch(72.3% .219 149.579); --color-green-600: oklch(62.7% .194 149.214); --color-green-700: oklch(52.7% .154 150.069); --color-teal-50: oklch(98.4% .014 180.72); --color-teal-600: oklch(60% .118 184.704); --color-teal-700: oklch(51.1% .096 186.391); --color-blue-50: oklch(97% .014 254.604); --color-blue-500: oklch(62.3% .214 259.815); --color-blue-600: oklch(54.6% .245 262.881); --color-blue-700: oklch(48.8% .243 264.376); --color-indigo-50: oklch(96.2% .018 272.314); --color-indigo-600: oklch(51.1% .262 276.966); --color-purple-50: oklch(97.7% .014 308.299); --color-purple-400: oklch(71.4% .203 305.504); --color-purple-600: oklch(55.8% .288 302.321); --color-purple-700: oklch(49.6% .265 301.924); --color-pink-600: oklch(59.2% .249 .584); --color-rose-50: oklch(96.9% .015 12.422); --color-rose-100: oklch(94.1% .03 12.58); --color-rose-500: oklch(64.5% .246 16.439); --color-rose-600: oklch(58.6% .253 17.585); --color-slate-50: oklch(98.4% .003 247.858); --color-slate-400: oklch(70.4% .04 256.788); --color-slate-500: oklch(55.4% .046 257.417); --color-slate-600: oklch(44.6% .043 257.281); --color-slate-900: oklch(20.8% .042 265.755); --color-gray-50: oklch(98.5% .002 247.839); --color-gray-100: oklch(96.7% .003 264.542); --color-gray-200: oklch(92.8% .006 264.531); --color-gray-300: oklch(87.2% .01 258.338); --color-gray-400: oklch(70.7% .022 261.325); --color-gray-500: oklch(55.1% .027 264.364); --color-gray-600: oklch(44.6% .03 256.802); --color-gray-700: oklch(37.3% .034 259.733); --color-gray-800: oklch(27.8% .033 256.848); --color-gray-900: oklch(21% .034 264.665); --color-gray-950: oklch(13% .028 261.692); --color-zinc-300: oklch(87.1% .006 286.286); --color-zinc-800: oklch(27.4% .006 286.033); --color-zinc-900: oklch(21% .006 285.885); --color-neutral-50: oklch(98.5% 0 0); --color-neutral-100: oklch(97% 0 0); --color-neutral-200: oklch(92.2% 0 0); --color-neutral-300: oklch(87% 0 0); --color-neutral-400: oklch(70.8% 0 0); --color-neutral-500: oklch(55.6% 0 0); --color-neutral-600: oklch(43.9% 0 0); --color-neutral-700: oklch(37.1% 0 0); --color-neutral-800: oklch(26.9% 0 0); --color-neutral-900: oklch(20.5% 0 0); --color-neutral-950: oklch(14.5% 0 0); --color-black: #000; --color-white: #fff; --spacing: 4px; --breakpoint-xl: 1280px; --container-sm: 384px; --container-md: 448px; --container-lg: 512px; --container-xl: 576px; --container-2xl: 672px; --container-4xl: 896px; --container-6xl: 1152px; --container-7xl: 1280px; --text-xs: 12px; --text-xs--line-height: calc(1 / .75); --text-sm: 14px; --text-sm--line-height: calc(1.25 / .875); --text-base: 16px; --text-base--line-height: 1.5; --text-lg: 18px; --text-lg--line-height: calc(1.75 / 1.125); --text-xl: 20px; --text-xl--line-height: calc(1.75 / 1.25); --text-2xl: 24px; --text-2xl--line-height: calc(2 / 1.5); --text-3xl: 30px; --text-3xl--line-height: 1.2; --text-4xl: 36px; --text-4xl--line-height: calc(2.5 / 2.25); --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; --font-weight-black: 900; --tracking-tight: -.025em; --tracking-normal: 0em; --tracking-wide: .025em; --tracking-wider: .05em; --tracking-widest: .1em; --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --radius-xs: 2px; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius-xl: 12px; --radius-2xl: 16px; --radius-3xl: 24px; --radius-4xl: 32px; --ease-in: cubic-bezier(.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, .2, 1); --ease-in-out: cubic-bezier(.4, 0, .2, 1); --animate-spin: spin 1s linear infinite; --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; --blur-sm: 8px; --default-transition-duration: .15s; --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-font-family: var(--font-sans); --default-mono-font-family: var(--font-mono); }*, ::after, ::before, ::backdrop { box-sizing: border-box; border: 0px solid; margin: 0px; padding: 0px; }::file-selector-button { box-sizing: border-box; border: 0px solid; margin: 0px; padding: 0px; }html, :host { text-size-adjust: 100%; tab-size: 4; line-height: 1.5; font-family: var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); font-feature-settings: var(--default-font-feature-settings,normal); font-variation-settings: var(--default-font-variation-settings,normal); -webkit-tap-highlight-color: transparent; }hr { height: 0px; color: inherit; border-top-width: 1px; }abbr:where([title]) { text-decoration: underline dotted; }h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; }a { color: inherit; text-decoration: inherit; }b, strong { font-weight: bolder; }code, kbd, samp, pre { font-family: var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); font-feature-settings: var(--default-mono-font-feature-settings,normal); font-variation-settings: var(--default-mono-font-variation-settings,normal); font-size: 1em; }small { font-size: 80%; }sub, sup { vertical-align: baseline; font-size: 75%; line-height: 0; position: relative; }sub { bottom: -0.25em; }sup { top: -0.5em; }table { text-indent: 0px; border-color: inherit; border-collapse: collapse; }progress { vertical-align: baseline; }summary { display: list-item; }ol, ul, menu { list-style: none; }img, svg, video, canvas, audio, iframe, embed, object { vertical-align: middle; display: block; }img, video { max-width: 100%; height: auto; }button, input, select, optgroup, textarea { font: inherit; letter-spacing: inherit; color: inherit; opacity: 1; background-color: rgba(0, 0, 0, 0); border-radius: 0px; }::file-selector-button { font: inherit; letter-spacing: inherit; color: inherit; opacity: 1; background-color: rgba(0, 0, 0, 0); border-radius: 0px; }:where(select:is([multiple], [size])) optgroup { font-weight: bolder; }:where(select:is([multiple], [size])) optgroup option { padding-inline-start: 20px; }::file-selector-button { margin-inline-end: 4px; }::placeholder { opacity: 1; }@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px) {  ::placeholder { color: currentcolor; }  @supports (color:color-mix(in lab,red,red)) {  ::placeholder { color: color-mix(currentcolor, transparent); }}}textarea { resize: vertical; }::-webkit-search-decoration { appearance: none; }::-webkit-date-and-time-value { min-height: 1lh; text-align: inherit; }::-webkit-datetime-edit { display: inline-flex; }::-webkit-datetime-edit-fields-wrapper { padding: 0px; }::-webkit-datetime-edit { padding-block: 0px; }::-webkit-datetime-edit-year-field { padding-block: 0px; }::-webkit-datetime-edit-month-field { padding-block: 0px; }::-webkit-datetime-edit-day-field { padding-block: 0px; }::-webkit-datetime-edit-hour-field { padding-block: 0px; }::-webkit-datetime-edit-minute-field { padding-block: 0px; }::-webkit-datetime-edit-second-field { padding-block: 0px; }::-webkit-datetime-edit-millisecond-field { padding-block: 0px; }::-webkit-datetime-edit-meridiem-field { padding-block: 0px; }::-webkit-calendar-picker-indicator { line-height: 1; }button, input:where([type="button"], [type="reset"], [type="submit"]) { appearance: button; }::file-selector-button { appearance: button; }::-webkit-inner-spin-button { height: auto; }::-webkit-outer-spin-button { height: auto; }[hidden]:where(:not([hidden="until-found"])) { display: none !important; }@layer components;.\@container { container-type: inline-size; }.pointer-events-auto { pointer-events: auto; }.pointer-events-none { pointer-events: none; }.collapse { visibility: collapse; }.invisible { visibility: hidden; }.visible { visibility: visible; }.sr-only { clip-path: inset(50%); white-space: nowrap; border-width: 0px; width: 1px; height: 1px; margin: -1px; padding: 0px; position: absolute; overflow: hidden; }.absolute { position: absolute; }.fixed { position: fixed; }.relative { position: relative; }.static { position: static; }.sticky { position: sticky; }.inset-0 { inset: calc(var(--spacing) * 0); }.top-0 { top: calc(var(--spacing) * 0); }.top-1 { top: calc(var(--spacing) * 1); }.top-1\/2 { top: 50%; }.top-3 { top: calc(var(--spacing) * 3); }.top-4 { top: calc(var(--spacing) * 4); }.top-\[76px\] { top: 76px; }.top-\[80px\] { top: 80px; }.top-auto { top: auto; }.top-full { top: 100%; }.-right-0, .right-0 { right: calc(var(--spacing) * 0); }.right-1 { right: calc(var(--spacing) * 1); }.right-2 { right: calc(var(--spacing) * 2); }.right-3 { right: calc(var(--spacing) * 3); }.right-4 { right: calc(var(--spacing) * 4); }.right-full { right: 100%; }.-bottom-0, .bottom-0 { bottom: calc(var(--spacing) * 0); }.bottom-3 { bottom: calc(var(--spacing) * 3); }.bottom-4 { bottom: calc(var(--spacing) * 4); }.bottom-full { bottom: 100%; }.-left-2 { left: calc(var(--spacing) * -2); }.left-0 { left: calc(var(--spacing) * 0); }.left-1 { left: calc(var(--spacing) * 1); }.left-1\/2 { left: 50%; }.left-2 { left: calc(var(--spacing) * 2); }.left-3 { left: calc(var(--spacing) * 3); }.left-4 { left: calc(var(--spacing) * 4); }.left-auto { left: auto; }.left-full { left: 100%; }.isolate { isolation: isolate; }.z-10 { z-index: 10; }.z-20 { z-index: 20; }.z-50 { z-index: 50; }.z-\[60\] { z-index: 60; }.z-\[99\] { z-index: 99; }.z-\[100\] { z-index: 100; }.z-\[9999\] { z-index: 9999; }.z-\[10000\] { z-index: 10000; }.z-\[10001\] { z-index: 10001; }.z-\[var\(--burger-btn-z-index\,1\)\] { z-index: var(--burger-btn-z-index,1); }.order-first { order: -9999; }.col-span-2 { grid-column: span 2 / span 2; }.col-span-3 { grid-column: span 3 / span 3; }.col-span-7 { grid-column: span 7 / span 7; }.col-span-10 { grid-column: span 10 / span 10; }.row-3 { grid-row: 3; }.row-4 { grid-row: 4; }.float-end { float: inline-end; }.float-left { float: left; }.float-start { float: inline-start; }.clear-both { clear: both; }.clear-left { clear: left; }.container { width: 100%; }@media (min-width: 640px) {  .container { max-width: 640px; }}@media (min-width: 768px) {  .container { max-width: 768px; }}@media (min-width: 1024px) {  .container { max-width: 1024px; }}@media (min-width: 1280px) {  .container { max-width: 1280px; }}@media (min-width: 1536px) {  .container { max-width: 1536px; }}.m-0 { margin: calc(var(--spacing) * 0); }.m-1 { margin: calc(var(--spacing) * 1); }.m-4 { margin: calc(var(--spacing) * 4); }.m-auto { margin: auto; }.-mx-4 { margin-inline: calc(var(--spacing) * -4); }.mx-0 { margin-inline: calc(var(--spacing) * 0); }.mx-1 { margin-inline: calc(var(--spacing) * 1); }.mx-2 { margin-inline: calc(var(--spacing) * 2); }.mx-4 { margin-inline: calc(var(--spacing) * 4); }.mx-auto { margin-inline: auto; }.-my-2 { margin-block: calc(var(--spacing) * -2); }.my-0 { margin-block: calc(var(--spacing) * 0); }.my-1 { margin-block: calc(var(--spacing) * 1); }.my-2 { margin-block: calc(var(--spacing) * 2); }.my-3 { margin-block: calc(var(--spacing) * 3); }.my-4 { margin-block: calc(var(--spacing) * 4); }.my-5 { margin-block: calc(var(--spacing) * 5); }.my-6 { margin-block: calc(var(--spacing) * 6); }.my-7 { margin-block: calc(var(--spacing) * 7); }.my-8 { margin-block: calc(var(--spacing) * 8); }.my-10 { margin-block: calc(var(--spacing) * 10); }.my-auto { margin-block: auto; }.ms-4 { margin-inline-start: calc(var(--spacing) * 4); }.me-2 { margin-inline-end: calc(var(--spacing) * 2); }.prose { color: var(--tw-prose-#widget-1bec2uw); max-width: 65ch; }.prose :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; }.prose :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-lead); margin-top: 1.2em; margin-bottom: 1.2em; font-size: 1.25em; line-height: 1.6; }.prose :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-links); font-weight: 500; text-decoration: underline; }.prose :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-bold); font-weight: 600; }.prose :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }.prose :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; list-style-type: decimal; }.prose :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-alpha; }.prose :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-alpha; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-alpha; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-alpha; }.prose :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-roman; }.prose :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-roman; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-roman; }.prose :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-roman; }.prose :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: decimal; }.prose :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; list-style-type: disc; }.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { color: var(--tw-prose-counters); font-weight: 400; }.prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { color: var(--tw-prose-bullets); }.prose :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 1.25em; font-weight: 600; }.prose :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-color: var(--tw-prose-hr); border-top-width: 1px; margin-top: 3em; margin-bottom: 3em; }.prose :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-quotes); border-inline-start-width: 4px; border-inline-start-color: var(--tw-prose-quote-borders); quotes: "“" "”" "‘" "’"; margin-top: 1.6em; margin-bottom: 1.6em; padding-inline-start: 1em; font-style: italic; font-weight: 500; }.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { content: open-quote; }.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: close-quote; }.prose :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 0px; margin-bottom: 0.888889em; font-size: 2.25em; font-weight: 800; line-height: 1.11111; }.prose :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 900; }.prose :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 2em; margin-bottom: 1em; font-size: 1.5em; font-weight: 700; line-height: 1.33333; }.prose :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 800; }.prose :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 1.6em; margin-bottom: 0.6em; font-size: 1.25em; font-weight: 600; line-height: 1.6; }.prose :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 700; }.prose :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); margin-top: 1.5em; margin-bottom: 0.5em; font-weight: 600; line-height: 1.5; }.prose :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-weight: 700; }.prose :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }.prose :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; display: block; }.prose :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }.prose :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-kbd); box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows); padding-top: 0.1875em; padding-inline: 0.375em; padding-bottom: 0.1875em; border-radius: 5px; font-family: inherit; font-size: 0.875em; font-weight: 500; }.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-code); font-size: 0.875em; font-weight: 600; }.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before, .prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: "`"; }.prose :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }.prose :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-size: 0.875em; }.prose :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-size: 0.9em; }.prose :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }.prose :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-pre-code); background-color: var(--tw-prose-pre-bg); padding-top: 0.857143em; padding-inline: 1.14286em; padding-bottom: 0.857143em; border-radius: 6px; margin-top: 1.71429em; margin-bottom: 1.71429em; font-size: 0.875em; font-weight: 400; line-height: 1.71429; overflow-x: auto; }.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: inherit; color: inherit; font-size: inherit; font-family: inherit; line-height: inherit; background-color: rgba(0, 0, 0, 0); border-width: 0px; border-radius: 0px; padding: 0px; }.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before, .prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: none; }.prose :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { table-layout: auto; width: 100%; margin-top: 2em; margin-bottom: 2em; font-size: 0.875em; line-height: 1.71429; }.prose :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-th-borders); }.prose :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-headings); vertical-align: bottom; padding-inline: 0.571429em; padding-bottom: 0.571429em; font-weight: 600; }.prose :where(t#widget-1bec2uw tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-td-borders); }.prose :where(t#widget-1bec2uw tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-1bec2uw td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { vertical-align: baseline; }.prose :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-top-width: 1px; border-top-color: var(--tw-prose-th-borders); }.prose :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { vertical-align: top; }.prose :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { text-align: start; }.prose :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--tw-prose-captions); margin-top: 0.857143em; font-size: 0.875em; line-height: 1.42857; }.prose { --tw-prose-#widget-1bec2uw: oklch(37.3% .034 259.733); --tw-prose-headings: oklch(21% .034 264.665); --tw-prose-lead: oklch(44.6% .03 256.802); --tw-prose-links: oklch(21% .034 264.665); --tw-prose-bold: oklch(21% .034 264.665); --tw-prose-counters: oklch(55.1% .027 264.364); --tw-prose-bullets: oklch(87.2% .01 258.338); --tw-prose-hr: oklch(92.8% .006 264.531); --tw-prose-quotes: oklch(21% .034 264.665); --tw-prose-quote-borders: oklch(92.8% .006 264.531); --tw-prose-captions: oklch(55.1% .027 264.364); --tw-prose-kbd: oklch(21% .034 264.665); --tw-prose-kbd-shadows: oklab(21% -.00316127 -.0338527/.1); --tw-prose-code: oklch(21% .034 264.665); --tw-prose-pre-code: oklch(92.8% .006 264.531); --tw-prose-pre-bg: oklch(27.8% .033 256.848); --tw-prose-th-borders: oklch(87.2% .01 258.338); --tw-prose-td-borders: oklch(92.8% .006 264.531); --tw-prose-invert-#widget-1bec2uw: oklch(87.2% .01 258.338); --tw-prose-invert-headings: #fff; --tw-prose-invert-lead: oklch(70.7% .022 261.325); --tw-prose-invert-links: #fff; --tw-prose-invert-bold: #fff; --tw-prose-invert-counters: oklch(70.7% .022 261.325); --tw-prose-invert-bullets: oklch(44.6% .03 256.802); --tw-prose-invert-hr: oklch(37.3% .034 259.733); --tw-prose-invert-quotes: oklch(96.7% .003 264.542); --tw-prose-invert-quote-borders: oklch(37.3% .034 259.733); --tw-prose-invert-captions: oklch(70.7% .022 261.325); --tw-prose-invert-kbd: #fff; --tw-prose-invert-kbd-shadows: #ffffff1a; --tw-prose-invert-code: #fff; --tw-prose-invert-pre-code: oklch(87.2% .01 258.338); --tw-prose-invert-pre-bg: #00000080; --tw-prose-invert-th-borders: oklch(44.6% .03 256.802); --tw-prose-invert-td-borders: oklch(37.3% .034 259.733); font-size: 16px; line-height: 1.75; }.prose :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.5em; margin-bottom: 0.5em; }.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0.375em; }.prose :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; }.prose :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; }.prose :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.25em; }.prose :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; }.prose :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.25em; }.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; }.prose :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; }.prose :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.5em; padding-inline-start: 1.625em; }.prose :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose :where(t#widget-1bec2uw td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 0.571429em; padding-inline: 0.571429em; padding-bottom: 0.571429em; }.prose :where(t#widget-1bec2uw td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-1bec2uw td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }.prose :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 0px; }.prose-lg { font-size: 18px; line-height: 1.77778; }.prose-lg :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; margin-bottom: 1.33333em; }.prose-lg :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.09091em; margin-bottom: 1.09091em; font-size: 1.22222em; line-height: 1.45455; }.prose-lg :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.66667em; margin-bottom: 1.66667em; padding-inline-start: 1em; }.prose-lg :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0.833333em; font-size: 2.66667em; line-height: 1; }.prose-lg :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.86667em; margin-bottom: 1.06667em; font-size: 1.66667em; line-height: 1.33333; }.prose-lg :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.66667em; margin-bottom: 0.666667em; font-size: 1.33333em; line-height: 1.5; }.prose-lg :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 0.444444em; line-height: 1.55556; }.prose-lg :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 1.77778em; }.prose-lg :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose-lg :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 1.77778em; }.prose-lg :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 0.222222em; padding-inline: 0.444444em; padding-bottom: 0.222222em; border-radius: 5px; font-size: 0.888889em; }.prose-lg :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.888889em; }.prose-lg :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.866667em; }.prose-lg :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.875em; }.prose-lg :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 1em; padding-inline: 1.5em; padding-bottom: 1em; border-radius: 6px; margin-top: 2em; margin-bottom: 2em; font-size: 0.888889em; line-height: 1.75; }.prose-lg :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; margin-bottom: 1.33333em; padding-inline-start: 1.55556em; }.prose-lg :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.666667em; margin-bottom: 0.666667em; }.prose-lg :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0.444444em; }.prose-lg :where(.prose-lg > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.888889em; margin-bottom: 0.888889em; }.prose-lg :where(.prose-lg > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; }.prose-lg :where(.prose-lg > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.33333em; }.prose-lg :where(.prose-lg > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; }.prose-lg :where(.prose-lg > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.33333em; }.prose-lg :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.888889em; margin-bottom: 0.888889em; }.prose-lg :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; margin-bottom: 1.33333em; }.prose-lg :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.33333em; }.prose-lg :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.666667em; padding-inline-start: 1.55556em; }.prose-lg :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 3.11111em; margin-bottom: 3.11111em; }.prose-lg :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-lg :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose-lg :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-size: 0.888889em; line-height: 1.5; }.prose-lg :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline: 0.75em; padding-bottom: 0.75em; }.prose-lg :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose-lg :where(t#widget-1bec2uw td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 0.75em; padding-inline: 0.75em; padding-bottom: 0.75em; }.prose-lg :where(t#widget-1bec2uw td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-1bec2uw td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }.prose-lg :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.77778em; margin-bottom: 1.77778em; }.prose-lg :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }.prose-lg :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1em; font-size: 0.888889em; line-height: 1.5; }.prose-lg :where(.prose-lg > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }.prose-lg :where(.prose-lg > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 0px; }.mt-0 { margin-top: calc(var(--spacing) * 0); }.mt-1 { margin-top: calc(var(--spacing) * 1); }.mt-2 { margin-top: calc(var(--spacing) * 2); }.mt-3 { margin-top: calc(var(--spacing) * 3); }.mt-4 { margin-top: calc(var(--spacing) * 4); }.mt-5 { margin-top: calc(var(--spacing) * 5); }.mt-6 { margin-top: calc(var(--spacing) * 6); }.mt-7 { margin-top: calc(var(--spacing) * 7); }.mt-8 { margin-top: calc(var(--spacing) * 8); }.mt-10 { margin-top: calc(var(--spacing) * 10); }.mt-auto { margin-top: auto; }.-mr-1 { margin-right: calc(var(--spacing) * -1); }.mr-0 { margin-right: calc(var(--spacing) * 0); }.mr-1 { margin-right: calc(var(--spacing) * 1); }.mr-1\.5 { margin-right: calc(var(--spacing) * 1.5); }.mr-2 { margin-right: calc(var(--spacing) * 2); }.mr-3 { margin-right: calc(var(--spacing) * 3); }.mr-4 { margin-right: calc(var(--spacing) * 4); }.mr-5 { margin-right: calc(var(--spacing) * 5); }.mr-8 { margin-right: calc(var(--spacing) * 8); }.mr-auto { margin-right: auto; }.mb-0 { margin-bottom: calc(var(--spacing) * 0); }.mb-1 { margin-bottom: calc(var(--spacing) * 1); }.mb-2 { margin-bottom: calc(var(--spacing) * 2); }.mb-3 { margin-bottom: calc(var(--spacing) * 3); }.mb-4 { margin-bottom: calc(var(--spacing) * 4); }.mb-5 { margin-bottom: calc(var(--spacing) * 5); }.mb-6 { margin-bottom: calc(var(--spacing) * 6); }.mb-7 { margin-bottom: calc(var(--spacing) * 7); }.mb-8 { margin-bottom: calc(var(--spacing) * 8); }.mb-10 { margin-bottom: calc(var(--spacing) * 10); }.-ml-1 { margin-left: calc(var(--spacing) * -1); }.-ml-2 { margin-left: calc(var(--spacing) * -2); }.-ml-5 { margin-left: calc(var(--spacing) * -5); }.ml-0 { margin-left: calc(var(--spacing) * 0); }.ml-0\.5 { margin-left: calc(var(--spacing) * .5); }.ml-1 { margin-left: calc(var(--spacing) * 1); }.ml-2 { margin-left: calc(var(--spacing) * 2); }.ml-3 { margin-left: calc(var(--spacing) * 3); }.ml-4 { margin-left: calc(var(--spacing) * 4); }.ml-6 { margin-left: calc(var(--spacing) * 6); }.ml-8 { margin-left: calc(var(--spacing) * 8); }.ml-auto { margin-left: auto; }.box-border { box-sizing: border-box; }.line-clamp-2 { -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; }.line-clamp-3 { -webkit-line-clamp: 3; -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; }.block { display: block; }.contents { display: contents; }.flex { display: flex; }.flow-root { display: flow-root; }.grid { display: grid; }.hidden { display: none; }.inline { display: inline; }.inline-block { display: inline-block; }.inline-flex { display: inline-flex; }.table { display: table; }.table-row { display: table-row; }.aspect-square { aspect-ratio: 1 / 1; }.size-1 { width: calc(var(--spacing) * 1); height: calc(var(--spacing) * 1); }.size-1\.5 { width: calc(var(--spacing) * 1.5); height: calc(var(--spacing) * 1.5); }.size-2 { width: calc(var(--spacing) * 2); height: calc(var(--spacing) * 2); }.size-3 { width: calc(var(--spacing) * 3); height: calc(var(--spacing) * 3); }.size-4 { width: calc(var(--spacing) * 4); height: calc(var(--spacing) * 4); }.size-5 { width: calc(var(--spacing) * 5); height: calc(var(--spacing) * 5); }.size-6 { width: calc(var(--spacing) * 6); height: calc(var(--spacing) * 6); }.size-7 { width: calc(var(--spacing) * 7); height: calc(var(--spacing) * 7); }.size-8 { width: calc(var(--spacing) * 8); height: calc(var(--spacing) * 8); }.size-9 { width: calc(var(--spacing) * 9); height: calc(var(--spacing) * 9); }.size-10 { width: calc(var(--spacing) * 10); height: calc(var(--spacing) * 10); }.size-12 { width: calc(var(--spacing) * 12); height: calc(var(--spacing) * 12); }.size-16 { width: calc(var(--spacing) * 16); height: calc(var(--spacing) * 16); }.size-20 { width: calc(var(--spacing) * 20); height: calc(var(--spacing) * 20); }.size-40 { width: calc(var(--spacing) * 40); height: calc(var(--spacing) * 40); }.size-full { width: 100%; height: 100%; }.h-1 { height: calc(var(--spacing) * 1); }.h-1\.5 { height: calc(var(--spacing) * 1.5); }.h-2 { height: calc(var(--spacing) * 2); }.h-3 { height: calc(var(--spacing) * 3); }.h-4 { height: calc(var(--spacing) * 4); }.h-5 { height: calc(var(--spacing) * 5); }.h-6 { height: calc(var(--spacing) * 6); }.h-7 { height: calc(var(--spacing) * 7); }.h-8 { height: calc(var(--spacing) * 8); }.h-9 { height: calc(var(--spacing) * 9); }.h-10 { height: calc(var(--spacing) * 10); }.h-12 { height: calc(var(--spacing) * 12); }.h-14 { height: calc(var(--spacing) * 14); }.h-16 { height: calc(var(--spacing) * 16); }.h-20 { height: calc(var(--spacing) * 20); }.h-24 { height: calc(var(--spacing) * 24); }.h-28 { height: calc(var(--spacing) * 28); }.h-64 { height: calc(var(--spacing) * 64); }.h-\[30px\] { height: 30px; }.h-\[40px\] { height: 40px; }.h-\[44px\] { height: 44px; }.h-\[76px\] { height: 76px; }.h-\[600px\] { height: 600px; }.h-\[var\(--logo-height-mobile\,25px\)\] { height: var(--logo-height-mobile,25px); }.h-\[var\(--site-header-height\,60px\)\] { height: var(--site-header-height,60px); }.h-auto { height: auto; }.h-fit { height: fit-content; }.h-full { height: 100%; }.h-min { height: min-content; }.h-px { height: 1px; }.h-screen { height: 100vh; }.max-h-0 { max-height: calc(var(--spacing) * 0); }.max-h-6 { max-height: calc(var(--spacing) * 6); }.max-h-12 { max-height: calc(var(--spacing) * 12); }.max-h-32 { max-height: calc(var(--spacing) * 32); }.max-h-80 { max-height: calc(var(--spacing) * 80); }.max-h-\[90vh\] { max-height: 90vh; }.max-h-\[var\(--logo-height-mobile\,25px\)\] { max-height: var(--logo-height-mobile,25px); }.min-h-8 { min-height: calc(var(--spacing) * 8); }.min-h-10 { min-height: calc(var(--spacing) * 10); }.min-h-\[400px\] { min-height: 400px; }.min-h-full { min-height: 100%; }.min-h-screen { min-height: 100vh; }.w-0 { width: calc(var(--spacing) * 0); }.w-1 { width: calc(var(--spacing) * 1); }.w-1\.5 { width: calc(var(--spacing) * 1.5); }.w-1\/3 { width: 33.3333%; }.w-1\/4 { width: 25%; }.w-2 { width: calc(var(--spacing) * 2); }.w-3 { width: calc(var(--spacing) * 3); }.w-4 { width: calc(var(--spacing) * 4); }.w-5 { width: calc(var(--spacing) * 5); }.w-6 { width: calc(var(--spacing) * 6); }.w-8 { width: calc(var(--spacing) * 8); }.w-9 { width: calc(var(--spacing) * 9); }.w-10 { width: calc(var(--spacing) * 10); }.w-12 { width: calc(var(--spacing) * 12); }.w-16 { width: calc(var(--spacing) * 16); }.w-20 { width: calc(var(--spacing) * 20); }.w-24 { width: calc(var(--spacing) * 24); }.w-28 { width: calc(var(--spacing) * 28); }.w-32 { width: calc(var(--spacing) * 32); }.w-36 { width: calc(var(--spacing) * 36); }.w-40 { width: calc(var(--spacing) * 40); }.w-44 { width: calc(var(--spacing) * 44); }.w-48 { width: calc(var(--spacing) * 48); }.w-56 { width: calc(var(--spacing) * 56); }.w-64 { width: calc(var(--spacing) * 64); }.w-\[140px\] { width: 140px; }.w-auto { width: auto; }.w-fit { width: fit-content; }.w-full { width: 100%; }.w-max { width: max-content; }.w-px { width: 1px; }.w-screen { width: 100vw; }.max-w-2xl { max-width: var(--container-2xl); }.max-w-4xl { max-width: var(--container-4xl); }.max-w-6xl { max-width: var(--container-6xl); }.max-w-7xl { max-width: var(--container-7xl); }.max-w-32 { max-width: calc(var(--spacing) * 32); }.max-w-40 { max-width: calc(var(--spacing) * 40); }.max-w-64 { max-width: calc(var(--spacing) * 64); }.max-w-\[960px\] { max-width: 960px; }.max-w-\[65ch\] { max-width: 65ch; }.max-w-\[1200px\] { max-width: 1200px; }.max-w-\[min\(var\(--site-header-max-width\,970px\)\,98dvw\)\] { max-width: min(var(--site-header-max-width,970px),98dvw); }.max-w-full { max-width: 100%; }.max-w-lg { max-width: var(--container-lg); }.max-w-md { max-width: var(--container-md); }.max-w-none { max-width: none; }.max-w-screen-xl { max-width: var(--breakpoint-xl); }.max-w-sm { max-width: var(--container-sm); }.max-w-xl { max-width: var(--container-xl); }.min-w-0 { min-width: calc(var(--spacing) * 0); }.min-w-8 { min-width: calc(var(--spacing) * 8); }.min-w-10 { min-width: calc(var(--spacing) * 10); }.min-w-16 { min-width: calc(var(--spacing) * 16); }.min-w-20 { min-width: calc(var(--spacing) * 20); }.min-w-36 { min-width: calc(var(--spacing) * 36); }.min-w-40 { min-width: calc(var(--spacing) * 40); }.min-w-52 { min-width: calc(var(--spacing) * 52); }.min-w-\[800px\] { min-width: 800px; }.min-w-\[var\(--tray-bell-min-width\,40px\)\] { min-width: var(--tray-bell-min-width,40px); }.min-w-full { min-width: 100%; }.flex-0 { flex: 0 1 0%; }.flex-1 { flex: 1 1 0%; }.flex-none { flex: 0 0 auto; }.flex-shrink { flex-shrink: 1; }.flex-shrink-0 { flex-shrink: 0; }.shrink { flex-shrink: 1; }.shrink-0 { flex-shrink: 0; }.flex-grow, .grow { flex-grow: 1; }.grow-0 { flex-grow: 0; }.basis-1 { flex-basis: calc(var(--spacing) * 1); }.basis-2 { flex-basis: calc(var(--spacing) * 2); }.basis-3 { flex-basis: calc(var(--spacing) * 3); }.basis-11 { flex-basis: calc(var(--spacing) * 11); }.basis-13 { flex-basis: calc(var(--spacing) * 13); }.basis-auto { flex-basis: auto; }.basis-full { flex-basis: 100%; }.border-collapse { border-collapse: collapse; }.origin-center { transform-origin: 50% center; }.origin-top-right { transform-origin: 100% 0px; }.-translate-x-1 { --tw-translate-x: calc(var(--spacing) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-x-1\/2 { --tw-translate-x: -50%; translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-x-2 { --tw-translate-x: calc(var(--spacing) * -2); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-x-0 { --tw-translate-x: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-x-4 { --tw-translate-x: calc(var(--spacing) * 4); translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-y-1 { --tw-translate-y: calc(var(--spacing) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-y-1\/2 { --tw-translate-y: -50%; translate: var(--tw-translate-x) var(--tw-translate-y); }.-translate-y-full { --tw-translate-y: -100%; translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-y-0 { --tw-translate-y: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-y-4 { --tw-translate-y: calc(var(--spacing) * 4); translate: var(--tw-translate-x) var(--tw-translate-y); }.translate-y-full { --tw-translate-y: 100%; translate: var(--tw-translate-x) var(--tw-translate-y); }.scale-95 { --tw-scale-x: 95%; --tw-scale-y: 95%; --tw-scale-z: 95%; scale: var(--tw-scale-x) var(--tw-scale-y); }.scale-100 { --tw-scale-x: 100%; --tw-scale-y: 100%; --tw-scale-z: 100%; scale: var(--tw-scale-x) var(--tw-scale-y); }.-rotate-90 { rotate: -90deg; }.rotate-90 { rotate: 90deg; }.rotate-180 { rotate: 180deg; }.transform { transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); }.animate-pulse { animation: var(--animate-pulse); }.animate-spin { animation: var(--animate-spin); }.cursor-default { cursor: default; }.cursor-not-allowed { cursor: not-allowed; }.cursor-pointer { cursor: pointer; }.resize { resize: both; }.resize-y { resize: vertical; }.snap-x { scroll-snap-type: x var(--tw-scroll-snap-strictness); }.snap-mandatory { --tw-scroll-snap-strictness: mandatory; }.snap-start { scroll-snap-align: start; }.list-outside { list-style-position: outside; }.list-disc { list-style-type: disc; }.list-none { list-style-type: none; }.appearance-none { appearance: none; }.grid-cols-1 { grid-template-columns: repeat(1, minmax(0px, 1fr)); }.grid-cols-2 { grid-template-columns: repeat(2, minmax(0px, 1fr)); }.grid-cols-3 { grid-template-columns: repeat(3, minmax(0px, 1fr)); }.grid-rows-2 { grid-template-rows: repeat(2, minmax(0px, 1fr)); }.flex-col { flex-direction: column; }.flex-row { flex-direction: row; }.flex-row-reverse { flex-direction: row-reverse; }.flex-nowrap { flex-wrap: nowrap; }.flex-wrap { flex-wrap: wrap; }.place-items-center { place-items: center; }.content-around { align-content: space-around; }.content-center { align-content: center; }.content-stretch { align-content: stretch; }.items-baseline { align-items: baseline; }.items-center { align-items: center; }.items-end { align-items: flex-end; }.items-start { align-items: flex-start; }.items-stretch { align-items: stretch; }.justify-between { justify-content: space-between; }.justify-center { justify-content: center; }.justify-end { justify-content: flex-end; }.justify-start { justify-content: flex-start; }.gap-0 { gap: calc(var(--spacing) * 0); }.gap-1 { gap: calc(var(--spacing) * 1); }.gap-1\.5 { gap: calc(var(--spacing) * 1.5); }.gap-2 { gap: calc(var(--spacing) * 2); }.gap-2\.5 { gap: calc(var(--spacing) * 2.5); }.gap-3 { gap: calc(var(--spacing) * 3); }.gap-4 { gap: calc(var(--spacing) * 4); }.gap-5 { gap: calc(var(--spacing) * 5); }.gap-6 { gap: calc(var(--spacing) * 6); }.gap-8 { gap: calc(var(--spacing) * 8); }.gap-\[var\(--site-header-gap\,0\10.4px\)\] { gap: var(--site-header-gap,10.4px); }.gap-px { gap: 1px; }:where(.space-y-1 > :not(:last-child)) { --tw-space-y-reverse: 0; margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse)); margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse))); }.gap-x-1 { column-gap: calc(var(--spacing) * 1); }.gap-x-3 { column-gap: calc(var(--spacing) * 3); }.gap-x-4 { column-gap: calc(var(--spacing) * 4); }.gap-x-5 { column-gap: calc(var(--spacing) * 5); }.gap-x-8 { column-gap: calc(var(--spacing) * 8); }.gap-x-10 { column-gap: calc(var(--spacing) * 10); }:where(.space-x-3 > :not(:last-child)) { --tw-space-x-reverse: 0; margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse)); margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse))); }.gap-y-1 { row-gap: calc(var(--spacing) * 1); }.gap-y-2 { row-gap: calc(var(--spacing) * 2); }.gap-y-3 { row-gap: calc(var(--spacing) * 3); }.gap-y-4 { row-gap: calc(var(--spacing) * 4); }.gap-y-6 { row-gap: calc(var(--spacing) * 6); }.gap-y-12 { row-gap: calc(var(--spacing) * 12); }:where(.divide-y > :not(:last-child)) { --tw-divide-y-reverse: 0; border-bottom-style: var(--tw-border-style); border-top-style: var(--tw-border-style); border-top-width: calc(1px * var(--tw-divide-y-reverse)); border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); }:where(.divide-neutral-100 > :not(:last-child)) { border-color: var(--color-neutral-100); }:where(.divide-white > :not(:last-child)) { border-color: var(--color-white); }.self-center { align-self: center; }.self-start { align-self: flex-start; }.truncate { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }.overflow-auto { overflow: auto; }.overflow-hidden { overflow: hidden; }.overflow-visible { overflow: visible; }.overflow-x-auto { overflow-x: auto; }.overflow-x-hidden { overflow-x: hidden; }.overflow-x-scroll { overflow-x: scroll; }.overflow-y-auto { overflow-y: auto; }.overflow-y-clip { overflow-y: clip; }.overflow-y-hidden { overflow-y: hidden; }.overflow-y-visible { overflow-y: visible; }.overscroll-x-contain { overscroll-behavior-x: contain; }.scroll-smooth { scroll-behavior: smooth; }.rounded { border-radius: 4px; }.rounded-2xl { border-radius: var(--radius-2xl); }.rounded-3xl { border-radius: var(--radius-3xl); }.rounded-4xl { border-radius: var(--radius-4xl); }.rounded-\[50\%\] { border-radius: 50%; }.rounded-\[var\(--image--border-radius\,0\)\] { border-radius: var(--image--border-radius,0); }.rounded-full { border-radius: 3.40282e+38px; }.rounded-lg { border-radius: var(--radius-lg); }.rounded-md { border-radius: var(--radius-md); }.rounded-none { border-radius: 0px; }.rounded-sm { border-radius: var(--radius-sm); }.rounded-xl { border-radius: var(--radius-xl); }.rounded-xs { border-radius: var(--radius-xs); }.rounded-t-2xl { border-top-left-radius: var(--radius-2xl); border-top-right-radius: var(--radius-2xl); }.rounded-l-full { border-top-left-radius: 3.40282e+38px; border-bottom-left-radius: 3.40282e+38px; }.rounded-tl-lg { border-top-left-radius: var(--radius-lg); }.rounded-r-full { border-top-right-radius: 3.40282e+38px; border-bottom-right-radius: 3.40282e+38px; }.rounded-tr-lg { border-top-right-radius: var(--radius-lg); }.rounded-b-none { border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; }.rounded-br-lg { border-bottom-right-radius: var(--radius-lg); }.rounded-bl-lg { border-bottom-left-radius: var(--radius-lg); }.border { border-style: var(--tw-border-style); border-width: 1px; }.border-0 { border-style: var(--tw-border-style); border-width: 0px; }.border-1 { border-style: var(--tw-border-style); border-width: 1px; }.border-2 { border-style: var(--tw-border-style); border-width: 2px; }.border-8 { border-style: var(--tw-border-style); border-width: 8px; }.border-x-0 { border-inline-style: var(--tw-border-style); border-inline-width: 0px; }.border-y { border-block-style: var(--tw-border-style); border-block-width: 1px; }.border-y-0 { border-block-style: var(--tw-border-style); border-block-width: 0px; }.border-y-2 { border-block-style: var(--tw-border-style); border-block-width: 2px; }.border-t { border-top-style: var(--tw-border-style); border-top-width: 1px; }.border-t-2 { border-top-style: var(--tw-border-style); border-top-width: 2px; }.border-r { border-right-style: var(--tw-border-style); border-right-width: 1px; }.border-r-0 { border-right-style: var(--tw-border-style); border-right-width: 0px; }.border-b { border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; }.border-b-0 { border-bottom-style: var(--tw-border-style); border-bottom-width: 0px; }.border-b-2 { border-bottom-style: var(--tw-border-style); border-bottom-width: 2px; }.border-l { border-left-style: var(--tw-border-style); border-left-width: 1px; }.border-dashed { --tw-border-style: dashed; border-style: dashed; }.border-none { --tw-border-style: none; border-style: none; }.border-solid { --tw-border-style: solid; border-style: solid; }.border-\(--footer-nav-border-color\) { border-color: var(--footer-nav-border-color); }.border-\[\#DC1F26\] { border-color: rgb(220, 31, 38); }.border-black { border-color: var(--color-black); }.border-gray-100 { border-color: var(--color-gray-100); }.border-gray-200 { border-color: var(--color-gray-200); }.border-gray-300 { border-color: var(--color-gray-300); }.border-gray-400 { border-color: var(--color-gray-400); }.border-gray-500 { border-color: var(--color-gray-500); }.border-gray-600 { border-color: var(--color-gray-600); }.border-gray-700 { border-color: var(--color-gray-700); }.border-gray-800 { border-color: var(--color-gray-800); }.border-green-600 { border-color: var(--color-green-600); }.border-neutral-100 { border-color: var(--color-neutral-100); }.border-neutral-200 { border-color: var(--color-neutral-200); }.border-neutral-300 { border-color: var(--color-neutral-300); }.border-red-600 { border-color: var(--color-red-600); }.border-rose-100 { border-color: var(--color-rose-100); }.border-slate-600 { border-color: var(--color-slate-600); }.border-transparent { border-color: rgba(0, 0, 0, 0); }.border-white { border-color: var(--color-white); }.border-yellow-300 { border-color: var(--color-yellow-300); }.border-yellow-500 { border-color: var(--color-yellow-500); }.border-t-black { border-top-color: var(--color-black); }.border-t-neutral-500 { border-top-color: var(--color-neutral-500); }.border-r-neutral-100 { border-right-color: var(--color-neutral-100); }.border-r-neutral-200 { border-right-color: var(--color-neutral-200); }.border-b-black { border-bottom-color: var(--color-black); }.border-b-neutral-200 { border-bottom-color: var(--color-neutral-200); }.border-b-neutral-300 { border-bottom-color: var(--color-neutral-300); }.border-l-neutral-200 { border-left-color: var(--color-neutral-200); }.bg-\(--footer-bg-color\) { background-color: var(--footer-bg-color); }.bg-\[\#33333370\] { background-color: rgba(51, 51, 51, 0.44); }.bg-\[\#DC1F26\] { background-color: rgb(220, 31, 38); }.bg-\[\#ededed\] { background-color: rgb(237, 237, 237); }.bg-\[var\(--region-redirect-banner-background\,var\(--brand-color-1\)\)\] { background-color: var(--region-redirect-banner-background,var(--brand-color-1)); }.bg-\[var\(--site-header-background-color\,white\)\] { background-color: var(--site-header-background-color,white); }.bg-amber-50 { background-color: var(--color-amber-50); }.bg-black { background-color: var(--color-black); }.bg-blue-50 { background-color: var(--color-blue-50); }.bg-gray-50 { background-color: var(--color-gray-50); }.bg-gray-100 { background-color: var(--color-gray-100); }.bg-gray-200 { background-color: var(--color-gray-200); }.bg-gray-300 { background-color: var(--color-gray-300); }.bg-gray-500 { background-color: var(--color-gray-500); }.bg-gray-500\/75 { background-color: rgba(106, 114, 130, 0.75); }@supports (color:color-mix(in lab,red,red)) {  .bg-gray-500\/75 { background-color: color-mix(in oklab,var(--color-gray-500) 75%,transparent); }}.bg-gray-800 { background-color: var(--color-gray-800); }.bg-gray-900 { background-color: var(--color-gray-900); }.bg-gray-950 { background-color: var(--color-gray-950); }.bg-green-50 { background-color: var(--color-green-50); }.bg-green-100 { background-color: var(--color-green-100); }.bg-green-500 { background-color: var(--color-green-500); }.bg-green-600 { background-color: var(--color-green-600); }.bg-inherit { background-color: inherit; }.bg-neutral-50 { background-color: var(--color-neutral-50); }.bg-neutral-50\/50 { background-color: rgba(250, 250, 250, 0.5); }@supports (color:color-mix(in lab,red,red)) {  .bg-neutral-50\/50 { background-color: color-mix(in oklab,var(--color-neutral-50) 50%,transparent); }}.bg-neutral-100 { background-color: var(--color-neutral-100); }.bg-neutral-200 { background-color: var(--color-neutral-200); }.bg-neutral-300 { background-color: var(--color-neutral-300); }.bg-neutral-500 { background-color: var(--color-neutral-500); }.bg-neutral-600 { background-color: var(--color-neutral-600); }.bg-neutral-800 { background-color: var(--color-neutral-800); }.bg-neutral-900 { background-color: var(--color-neutral-900); }.bg-neutral-900\/40 { background-color: rgba(23, 23, 23, 0.4); }@supports (color:color-mix(in lab,red,red)) {  .bg-neutral-900\/40 { background-color: color-mix(in oklab,var(--color-neutral-900) 40%,transparent); }}.bg-neutral-950 { background-color: var(--color-neutral-950); }.bg-orange-50 { background-color: var(--color-orange-50); }.bg-purple-50 { background-color: var(--color-purple-50); }.bg-red-50 { background-color: var(--color-red-50); }.bg-red-100 { background-color: var(--color-red-100); }.bg-red-500 { background-color: var(--color-red-500); }.bg-red-600 { background-color: var(--color-red-600); }.bg-rose-50 { background-color: var(--color-rose-50); }.bg-rose-500 { background-color: var(--color-rose-500); }.bg-slate-50 { background-color: var(--color-slate-50); }.bg-slate-500 { background-color: var(--color-slate-500); }.bg-slate-900 { background-color: var(--color-slate-900); }.bg-teal-50 { background-color: var(--color-teal-50); }.bg-transparent { background-color: rgba(0, 0, 0, 0); }.bg-white { background-color: var(--color-white); }.bg-yellow-50 { background-color: var(--color-yellow-50); }.bg-yellow-500 { background-color: var(--color-yellow-500); }.bg-zinc-300 { background-color: var(--color-zinc-300); }.bg-zinc-800 { background-color: var(--color-zinc-800); }.bg-zinc-900 { background-color: var(--color-zinc-900); }.bg-gradient-to-l { --tw-gradient-position: to left in oklab; background-image: linear-gradient(var(--tw-gradient-stops)); }.bg-gradient-to-t { --tw-gradient-position: to top in oklab; background-image: linear-gradient(var(--tw-gradient-stops)); }.bg-none { background-image: none; }.from-gray-100 { --tw-gradient-from: var(--color-gray-100); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.from-gray-950 { --tw-gradient-from: var(--color-gray-950); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.from-white { --tw-gradient-from: var(--color-white); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.to-gray-200 { --tw-gradient-to: var(--color-gray-200); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.to-gray-800 { --tw-gradient-to: var(--color-gray-800); --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.to-transparent { --tw-gradient-to: transparent; --tw-gradient-stops: var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); }.bg-cover { background-size: cover; }.bg-center { background-position: 50% center; }.bg-repeat { background-repeat: repeat; }.fill-gray-500 { fill: var(--color-gray-500); }.fill-white { fill: var(--color-white); }.object-contain { object-fit: contain; }.object-cover { object-fit: cover; }.object-center { object-position: center center; }.p-0 { padding: calc(var(--spacing) * 0); }.p-1 { padding: calc(var(--spacing) * 1); }.p-1\.5 { padding: calc(var(--spacing) * 1.5); }.p-2 { padding: calc(var(--spacing) * 2); }.p-3 { padding: calc(var(--spacing) * 3); }.p-4 { padding: calc(var(--spacing) * 4); }.p-5 { padding: calc(var(--spacing) * 5); }.p-6 { padding: calc(var(--spacing) * 6); }.p-8 { padding: calc(var(--spacing) * 8); }.px-0 { padding-inline: calc(var(--spacing) * 0); }.px-1 { padding-inline: calc(var(--spacing) * 1); }.px-2 { padding-inline: calc(var(--spacing) * 2); }.px-2\.5 { padding-inline: calc(var(--spacing) * 2.5); }.px-3 { padding-inline: calc(var(--spacing) * 3); }.px-4 { padding-inline: calc(var(--spacing) * 4); }.px-5 { padding-inline: calc(var(--spacing) * 5); }.px-6 { padding-inline: calc(var(--spacing) * 6); }.px-8 { padding-inline: calc(var(--spacing) * 8); }.px-12 { padding-inline: calc(var(--spacing) * 12); }.py-0 { padding-block: calc(var(--spacing) * 0); }.py-0\.5 { padding-block: calc(var(--spacing) * .5); }.py-1 { padding-block: calc(var(--spacing) * 1); }.py-1\.5 { padding-block: calc(var(--spacing) * 1.5); }.py-2 { padding-block: calc(var(--spacing) * 2); }.py-2\.5 { padding-block: calc(var(--spacing) * 2.5); }.py-3 { padding-block: calc(var(--spacing) * 3); }.py-4 { padding-block: calc(var(--spacing) * 4); }.py-5 { padding-block: calc(var(--spacing) * 5); }.py-6 { padding-block: calc(var(--spacing) * 6); }.py-7 { padding-block: calc(var(--spacing) * 7); }.py-8 { padding-block: calc(var(--spacing) * 8); }.py-10 { padding-block: calc(var(--spacing) * 10); }.py-12 { padding-block: calc(var(--spacing) * 12); }.py-24 { padding-block: calc(var(--spacing) * 24); }.pt-1 { padding-top: calc(var(--spacing) * 1); }.pt-2 { padding-top: calc(var(--spacing) * 2); }.pt-3 { padding-top: calc(var(--spacing) * 3); }.pt-4 { padding-top: calc(var(--spacing) * 4); }.pt-5 { padding-top: calc(var(--spacing) * 5); }.pt-6 { padding-top: calc(var(--spacing) * 6); }.pt-7 { padding-top: calc(var(--spacing) * 7); }.pt-8 { padding-top: calc(var(--spacing) * 8); }.pr-0 { padding-right: calc(var(--spacing) * 0); }.pr-1 { padding-right: calc(var(--spacing) * 1); }.pr-2 { padding-right: calc(var(--spacing) * 2); }.pr-3 { padding-right: calc(var(--spacing) * 3); }.pr-4 { padding-right: calc(var(--spacing) * 4); }.pr-5 { padding-right: calc(var(--spacing) * 5); }.pr-6 { padding-right: calc(var(--spacing) * 6); }.pr-8 { padding-right: calc(var(--spacing) * 8); }.pr-10 { padding-right: calc(var(--spacing) * 10); }.pr-12 { padding-right: calc(var(--spacing) * 12); }.pb-0 { padding-bottom: calc(var(--spacing) * 0); }.pb-1 { padding-bottom: calc(var(--spacing) * 1); }.pb-2 { padding-bottom: calc(var(--spacing) * 2); }.pb-3 { padding-bottom: calc(var(--spacing) * 3); }.pb-4 { padding-bottom: calc(var(--spacing) * 4); }.pb-5 { padding-bottom: calc(var(--spacing) * 5); }.pb-6 { padding-bottom: calc(var(--spacing) * 6); }.pb-8 { padding-bottom: calc(var(--spacing) * 8); }.pb-12 { padding-bottom: calc(var(--spacing) * 12); }.pb-\[var\(--strapline-padding-bottom\,12px\)\] { padding-bottom: var(--strapline-padding-bottom,12px); }.pl-0 { padding-left: calc(var(--spacing) * 0); }.pl-1 { padding-left: calc(var(--spacing) * 1); }.pl-1\.5 { padding-left: calc(var(--spacing) * 1.5); }.pl-2 { padding-left: calc(var(--spacing) * 2); }.pl-3 { padding-left: calc(var(--spacing) * 3); }.pl-4 { padding-left: calc(var(--spacing) * 4); }.pl-8 { padding-left: calc(var(--spacing) * 8); }.pl-9 { padding-left: calc(var(--spacing) * 9); }.pl-12 { padding-left: calc(var(--spacing) * 12); }.text-center { text-align: center; }.text-left { text-align: left; }.text-right { text-align: right; }.-indent-0 { text-indent: calc(var(--spacing) * 0); }.align-middle { vertical-align: middle; }.align-text-top { vertical-align: text-top; }.align-top { vertical-align: top; }.font-mono { font-family: var(--font-mono); }.font-sans { font-family: var(--font-sans); }.font-serif { font-family: var(--font-serif); }.text-2xl { font-size: var(--text-2xl); line-height: var(--tw-leading,var(--text-2xl--line-height)); }.text-3xl { font-size: var(--text-3xl); line-height: var(--tw-leading,var(--text-3xl--line-height)); }.text-4xl { font-size: var(--text-4xl); line-height: var(--tw-leading,var(--text-4xl--line-height)); }.text-base { font-size: var(--text-base); line-height: var(--tw-leading,var(--text-base--line-height)); }.text-lg { font-size: var(--text-lg); line-height: var(--tw-leading,var(--text-lg--line-height)); }.text-sm { font-size: var(--text-sm); line-height: var(--tw-leading,var(--text-sm--line-height)); }.text-xl { font-size: var(--text-xl); line-height: var(--tw-leading,var(--text-xl--line-height)); }.text-xs { font-size: var(--text-xs); line-height: var(--tw-leading,var(--text-xs--line-height)); }.text-\[10px\] { font-size: 10px; }.text-\[11px\] { font-size: 11px; }.text-\[length\:var\(--strapline-font-size\,13px\)\] { font-size: var(--strapline-font-size,13px); }.leading-2 { --tw-leading: calc(var(--spacing) * 2); line-height: calc(var(--spacing) * 2); }.leading-3 { --tw-leading: calc(var(--spacing) * 3); line-height: calc(var(--spacing) * 3); }.leading-4 { --tw-leading: calc(var(--spacing) * 4); line-height: calc(var(--spacing) * 4); }.leading-5 { --tw-leading: calc(var(--spacing) * 5); line-height: calc(var(--spacing) * 5); }.leading-6 { --tw-leading: calc(var(--spacing) * 6); line-height: calc(var(--spacing) * 6); }.leading-7 { --tw-leading: calc(var(--spacing) * 7); line-height: calc(var(--spacing) * 7); }.leading-8 { --tw-leading: calc(var(--spacing) * 8); line-height: calc(var(--spacing) * 8); }.leading-10 { --tw-leading: calc(var(--spacing) * 10); line-height: calc(var(--spacing) * 10); }.leading-none { --tw-leading: 1; line-height: 1; }.leading-normal { --tw-leading: var(--leading-normal); line-height: var(--leading-normal); }.leading-relaxed { --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); }.leading-snug { --tw-leading: var(--leading-snug); line-height: var(--leading-snug); }.leading-tight { --tw-leading: var(--leading-tight); line-height: var(--leading-tight); }.font-black { --tw-font-weight: var(--font-weight-black); font-weight: var(--font-weight-black); }.font-bold { --tw-font-weight: var(--font-weight-bold); font-weight: var(--font-weight-bold); }.font-extrabold { --tw-font-weight: var(--font-weight-extrabold); font-weight: var(--font-weight-extrabold); }.font-medium { --tw-font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium); }.font-normal { --tw-font-weight: var(--font-weight-normal); font-weight: var(--font-weight-normal); }.font-semibold { --tw-font-weight: var(--font-weight-semibold); font-weight: var(--font-weight-semibold); }.tracking-normal { --tw-tracking: var(--tracking-normal); letter-spacing: var(--tracking-normal); }.tracking-tight { --tw-tracking: var(--tracking-tight); letter-spacing: var(--tracking-tight); }.tracking-wide { --tw-tracking: var(--tracking-wide); letter-spacing: var(--tracking-wide); }.tracking-wider { --tw-tracking: var(--tracking-wider); letter-spacing: var(--tracking-wider); }.tracking-widest { --tw-tracking: var(--tracking-widest); letter-spacing: var(--tracking-widest); }.text-nowrap { text-wrap: nowrap; }.text-wrap { text-wrap: wrap; }.break-words { overflow-wrap: break-word; }.text-ellipsis { text-overflow: ellipsis; }.whitespace-break-spaces { white-space: break-spaces; }.whitespace-normal { white-space: normal; }.whitespace-nowrap { white-space: nowrap; }.whitespace-pre { white-space: pre; }.text-\(--footer-text-color\) { color: var(--footer-text-color); }.text-\[\#DC1F26\] { color: rgb(220, 31, 38); }.text-\[var\(--site-header-text-color\,\#333\)\] { color: var(--site-header-text-color,#333); }.text-amber-700 { color: var(--color-amber-700); }.text-black { color: var(--color-black); }.text-blue-500 { color: var(--color-blue-500); }.text-blue-700 { color: var(--color-blue-700); }.text-current { color: currentcolor; }.text-gray-50 { color: var(--color-gray-50); }.text-gray-100 { color: var(--color-gray-100); }.text-gray-200 { color: var(--color-gray-200); }.text-gray-300 { color: var(--color-gray-300); }.text-gray-400 { color: var(--color-gray-400); }.text-gray-500 { color: var(--color-gray-500); }.text-gray-600 { color: var(--color-gray-600); }.text-gray-700 { color: var(--color-gray-700); }.text-gray-800 { color: var(--color-gray-800); }.text-gray-900 { color: var(--color-gray-900); }.text-green-50 { color: var(--color-green-50); }.text-green-400 { color: var(--color-green-400); }.text-green-500 { color: var(--color-green-500); }.text-green-600 { color: var(--color-green-600); }.text-green-700 { color: var(--color-green-700); }.text-inherit { color: inherit; }.text-lime-700 { color: var(--color-lime-700); }.text-neutral-100 { color: var(--color-neutral-100); }.text-neutral-200 { color: var(--color-neutral-200); }.text-neutral-300 { color: var(--color-neutral-300); }.text-neutral-400 { color: var(--color-neutral-400); }.text-neutral-500 { color: var(--color-neutral-500); }.text-neutral-600 { color: var(--color-neutral-600); }.text-neutral-700 { color: var(--color-neutral-700); }.text-neutral-800 { color: var(--color-neutral-800); }.text-neutral-900 { color: var(--color-neutral-900); }.text-orange-700 { color: var(--color-orange-700); }.text-pink-600 { color: var(--color-pink-600); }.text-purple-700 { color: var(--color-purple-700); }.text-red-50 { color: var(--color-red-50); }.text-red-500 { color: var(--color-red-500); }.text-red-600 { color: var(--color-red-600); }.text-red-700 { color: var(--color-red-700); }.text-rose-600 { color: var(--color-rose-600); }.text-slate-50 { color: var(--color-slate-50); }.text-slate-500 { color: var(--color-slate-500); }.text-teal-700 { color: var(--color-teal-700); }.text-white { color: var(--color-white); }.text-yellow-700 { color: var(--color-yellow-700); }.text-yellow-800 { color: var(--color-yellow-800); }.\[text-transform\:var\(--strapline-text-transform\,uppercase\)\] { text-transform: var(--strapline-text-transform,uppercase); }.capitalize { text-transform: capitalize; }.lowercase { text-transform: lowercase; }.normal-case { text-transform: none; }.uppercase { text-transform: uppercase; }.italic { font-style: italic; }.ordinal { --tw-ordinal: ordinal; font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,); }.line-through { text-decoration-line: line-through; }.no-underline { text-decoration-line: none; }.underline { text-decoration-line: underline; }.decoration-current { text-decoration-color: currentcolor; }.decoration-transparent { text-decoration-color: rgba(0, 0, 0, 0); }.decoration-solid { text-decoration-style: solid; }.underline-offset-2 { text-underline-offset: 2px; }.placeholder-neutral-500::placeholder { color: var(--color-neutral-500); }.opacity-0 { opacity: 0; }.opacity-30 { opacity: 0.3; }.opacity-40 { opacity: 0.4; }.opacity-50 { opacity: 0.5; }.opacity-80 { opacity: 0.8; }.opacity-100 { opacity: 1; }.shadow { --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-2xl { --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color,#00000040); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-\[0_20px_60px_-15px_rgba\(0\,0\,0\,0\.4\)\] { --tw-shadow: 0 20px 60px -15px var(--tw-shadow-color,#0006); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-inner { --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-lg { --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-md { --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-none { --tw-shadow: 0 0 #0000; box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-sm { --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-xl { --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.shadow-xs { --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color,#0000000d); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-0 { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-1 { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-4 { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.ring-amber-600 { --tw-ring-color: var(--color-amber-600); }.ring-black { --tw-ring-color: var(--color-black); }.ring-blue-600 { --tw-ring-color: var(--color-blue-600); }.ring-gray-300 { --tw-ring-color: var(--color-gray-300); }.ring-green-600 { --tw-ring-color: var(--color-green-600); }.ring-orange-600 { --tw-ring-color: var(--color-orange-600); }.ring-purple-400 { --tw-ring-color: var(--color-purple-400); }.ring-purple-600 { --tw-ring-color: var(--color-purple-600); }.ring-red-600 { --tw-ring-color: var(--color-red-600); }.ring-slate-600 { --tw-ring-color: var(--color-slate-600); }.ring-teal-600 { --tw-ring-color: var(--color-teal-600); }.ring-white { --tw-ring-color: var(--color-white); }.ring-yellow-600 { --tw-ring-color: var(--color-yellow-600); }.outline-hidden { --tw-outline-style: none; outline-style: none; }@media (forced-colors: active) {  .outline-hidden { outline-offset: 2px; outline: rgba(0, 0, 0, 0) solid 2px; }}.outline, .outline-1 { outline-style: var(--tw-outline-style); outline-width: 1px; }.outline-transparent { outline-color: rgba(0, 0, 0, 0); }.blur { --tw-blur: blur(8px); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.brightness-0 { --tw-brightness: brightness(0%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.contrast-100 { --tw-contrast: contrast(100%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.grayscale { --tw-grayscale: grayscale(100%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.invert { --tw-invert: invert(100%); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.filter { filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); }.backdrop-blur-sm { --tw-backdrop-blur: blur(var(--blur-sm)); backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); }.backdrop-filter { backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); }.transition { transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-all { transition-property: all; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-colors { transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-opacity { transition-property: opacity; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-shadow { transition-property: box-shadow; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.transition-transform { transition-property: transform, translate, scale, rotate; transition-timing-function: var(--tw-ease,var(--default-transition-timing-function)); transition-duration: var(--tw-duration,var(--default-transition-duration)); }.duration-75 { --tw-duration: 75ms; transition-duration: 75ms; }.duration-100 { --tw-duration: .1s; transition-duration: 0.1s; }.duration-150 { --tw-duration: .15s; transition-duration: 0.15s; }.duration-200 { --tw-duration: .2s; transition-duration: 0.2s; }.duration-300 { --tw-duration: .3s; transition-duration: 0.3s; }.duration-500 { --tw-duration: .5s; transition-duration: 0.5s; }.ease-in { --tw-ease: var(--ease-in); transition-timing-function: var(--ease-in); }.ease-in-out { --tw-ease: var(--ease-in-out); transition-timing-function: var(--ease-in-out); }.ease-out { --tw-ease: var(--ease-out); transition-timing-function: var(--ease-out); }.prose-neutral { --tw-prose-#widget-1bec2uw: oklch(37.1% 0 0); --tw-prose-headings: oklch(20.5% 0 0); --tw-prose-lead: oklch(43.9% 0 0); --tw-prose-links: oklch(20.5% 0 0); --tw-prose-bold: oklch(20.5% 0 0); --tw-prose-counters: oklch(55.6% 0 0); --tw-prose-bullets: oklch(87% 0 0); --tw-prose-hr: oklch(92.2% 0 0); --tw-prose-quotes: oklch(20.5% 0 0); --tw-prose-quote-borders: oklch(92.2% 0 0); --tw-prose-captions: oklch(55.6% 0 0); --tw-prose-kbd: oklch(20.5% 0 0); --tw-prose-kbd-shadows: oklab(20.5% 0 0/.1); --tw-prose-code: oklch(20.5% 0 0); --tw-prose-pre-code: oklch(92.2% 0 0); --tw-prose-pre-bg: oklch(26.9% 0 0); --tw-prose-th-borders: oklch(87% 0 0); --tw-prose-td-borders: oklch(92.2% 0 0); --tw-prose-invert-#widget-1bec2uw: oklch(87% 0 0); --tw-prose-invert-headings: #fff; --tw-prose-invert-lead: oklch(70.8% 0 0); --tw-prose-invert-links: #fff; --tw-prose-invert-bold: #fff; --tw-prose-invert-counters: oklch(70.8% 0 0); --tw-prose-invert-bullets: oklch(43.9% 0 0); --tw-prose-invert-hr: oklch(37.1% 0 0); --tw-prose-invert-quotes: oklch(97% 0 0); --tw-prose-invert-quote-borders: oklch(37.1% 0 0); --tw-prose-invert-captions: oklch(70.8% 0 0); --tw-prose-invert-kbd: #fff; --tw-prose-invert-kbd-shadows: #ffffff1a; --tw-prose-invert-code: #fff; --tw-prose-invert-pre-code: oklch(87% 0 0); --tw-prose-invert-pre-bg: #00000080; --tw-prose-invert-th-borders: oklch(43.9% 0 0); --tw-prose-invert-td-borders: oklch(37.1% 0 0); }.outline-none { --tw-outline-style: none; outline-style: none; }.select-none { user-select: none; }.ring-inset { --tw-ring-inset: inset; }:is(.\*\:pointer-events-auto > *) { pointer-events: auto; }@media (hover: hover) {  .group-hover\:text-\[\#DC1F26\]:is(:where(.group):hover *) { color: rgb(220, 31, 38); }  .group-hover\:opacity-100:is(:where(.group):hover *) { opacity: 1; }}.visited\:text-inherit:visited { color: inherit; }.empty\:border-none:empty { --tw-border-style: none; border-style: none; }@media (hover: hover) {  .hover\:border-black:hover { border-color: var(--color-black); }  .hover\:border-neutral-300:hover { border-color: var(--color-neutral-300); }  .hover\:bg-\[\#b8181e\]:hover { background-color: rgb(184, 24, 30); }  .hover\:bg-black:hover { background-color: var(--color-black); }  .hover\:bg-blue-50:hover { background-color: var(--color-blue-50); }  .hover\:bg-green-50:hover { background-color: var(--color-green-50); }  .hover\:bg-green-700:hover { background-color: var(--color-green-700); }  .hover\:bg-indigo-50:hover { background-color: var(--color-indigo-50); }  .hover\:bg-neutral-50:hover { background-color: var(--color-neutral-50); }  .hover\:bg-neutral-100:hover { background-color: var(--color-neutral-100); }  .hover\:bg-neutral-200:hover { background-color: var(--color-neutral-200); }  .hover\:bg-neutral-800:hover { background-color: var(--color-neutral-800); }  .hover\:bg-red-50:hover { background-color: var(--color-red-50); }  .hover\:bg-red-700:hover { background-color: var(--color-red-700); }  .hover\:text-\[\#DC1F26\]:hover { color: rgb(220, 31, 38); }  .hover\:text-blue-600:hover { color: var(--color-blue-600); }  .hover\:text-gray-500:hover { color: var(--color-gray-500); }  .hover\:text-indigo-600:hover { color: var(--color-indigo-600); }  .hover\:text-inherit:hover { color: inherit; }  .hover\:text-neutral-700:hover { color: var(--color-neutral-700); }  .hover\:text-neutral-900:hover { color: var(--color-neutral-900); }  .hover\:text-red-600:hover { color: var(--color-red-600); }  .hover\:no-underline:hover { text-decoration-line: none; }  .hover\:underline:hover { text-decoration-line: underline; }  .hover\:decoration-transparent:hover { text-decoration-color: rgba(0, 0, 0, 0); }  .hover\:underline-offset-2:hover { text-underline-offset: 2px; }}.focus\:border-rose-500:focus { border-color: var(--color-rose-500); }.focus\:text-inherit:focus { color: inherit; }.focus\:decoration-transparent:focus { text-decoration-color: rgba(0, 0, 0, 0); }.focus\:ring-1:focus { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus\:ring-2:focus { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus\:ring-4:focus { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus\:ring-\[\#DC1F26\]:focus { --tw-ring-color: #dc1f26; }.focus\:ring-\[\#DC1F26\]\/20:focus { --tw-ring-color: oklab(57.3239% .195826 .0976754/.2); }.focus\:ring-rose-500:focus { --tw-ring-color: var(--color-rose-500); }.focus\:ring-offset-1:focus { --tw-ring-offset-width: 1px; --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); }.focus\:ring-offset-2:focus { --tw-ring-offset-width: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); }.focus\:outline-hidden:focus { --tw-outline-style: none; outline-style: none; }@media (forced-colors: active) {  .focus\:outline-hidden:focus { outline-offset: 2px; outline: rgba(0, 0, 0, 0) solid 2px; }}.focus\:outline-1:focus { outline-style: var(--tw-outline-style); outline-width: 1px; }.focus\:outline-none:focus { --tw-outline-style: none; outline-style: none; }.focus\:\[outline-style\:auto\]:focus { outline-style: auto; }.focus-visible\:ring-2:focus-visible { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor); box-shadow: var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow); }.focus-visible\:ring-gray-900:focus-visible { --tw-ring-color: var(--color-gray-900); }.focus-visible\:outline-hidden:focus-visible { --tw-outline-style: none; outline-style: none; }@media (forced-colors: active) {  .focus-visible\:outline-hidden:focus-visible { outline-offset: 2px; outline: rgba(0, 0, 0, 0) solid 2px; }}.active\:text-inherit:active { color: inherit; }@media not all and (min-width: 640px) {  .max-sm\:top-full { top: 100%; }  .max-sm\:left-2\/4 { left: 50%; }  .max-sm\:hidden { display: none; }  .max-sm\:min-w-\[300px\] { min-width: 300px; }  .max-sm\:-translate-x-2\/4 { --tw-translate-x: -50%; translate: var(--tw-translate-x) var(--tw-translate-y); }}@media (min-width: 640px) {  .sm\:visible { visibility: visible; }  .sm\:relative { position: relative; }  .sm\:top-4 { top: calc(var(--spacing) * 4); }  .sm\:top-\[88px\] { top: 88px; }  .sm\:top-\[92px\] { top: 92px; }  .sm\:right-3 { right: calc(var(--spacing) * 3); }  .sm\:right-4 { right: calc(var(--spacing) * 4); }  .sm\:left-3 { left: calc(var(--spacing) * 3); }  .sm\:order-3 { order: 3; }  .sm\:mx-auto { margin-inline: auto; }  .sm\:my-8 { margin-block: calc(var(--spacing) * 8); }  .sm\:mt-5 { margin-top: calc(var(--spacing) * 5); }  .sm\:mt-6 { margin-top: calc(var(--spacing) * 6); }  .sm\:mb-6 { margin-bottom: calc(var(--spacing) * 6); }  .sm\:mb-8 { margin-bottom: calc(var(--spacing) * 8); }  .sm\:block { display: block; }  .sm\:flex { display: flex; }  .sm\:hidden { display: none; }  .sm\:inline { display: inline; }  .sm\:h-6 { height: calc(var(--spacing) * 6); }  .sm\:h-12 { height: calc(var(--spacing) * 12); }  .sm\:h-\[50px\] { height: 50px; }  .sm\:h-\[var\(--logo-height-desktop\,auto\)\] { height: var(--logo-height-desktop,auto); }  .sm\:max-h-full { max-height: 100%; }  .sm\:w-6 { width: calc(var(--spacing) * 6); }  .sm\:w-12 { width: calc(var(--spacing) * 12); }  .sm\:w-64 { width: calc(var(--spacing) * 64); }  .sm\:w-\[480px\] { width: 480px; }  .sm\:max-w-full { max-width: 100%; }  .sm\:max-w-sm { max-width: var(--container-sm); }  .sm\:min-w-auto { min-width: auto; }  .sm\:translate-y-0 { --tw-translate-y: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); }  .sm\:scale-95 { --tw-scale-x: 95%; --tw-scale-y: 95%; --tw-scale-z: 95%; scale: var(--tw-scale-x) var(--tw-scale-y); }  .sm\:scale-100 { --tw-scale-x: 100%; --tw-scale-y: 100%; --tw-scale-z: 100%; scale: var(--tw-scale-x) var(--tw-scale-y); }  .sm\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0px, 1fr)); }  .sm\:flex-row { flex-direction: row; }  .sm\:items-center { align-items: center; }  .sm\:border-r { border-right-style: var(--tw-border-style); border-right-width: 1px; }  .sm\:border-solid { --tw-border-style: solid; border-style: solid; }  .sm\:border-gray-300 { border-color: var(--color-gray-300); }  .sm\:p-0 { padding: calc(var(--spacing) * 0); }  .sm\:p-3 { padding: calc(var(--spacing) * 3); }  .sm\:p-6 { padding: calc(var(--spacing) * 6); }  .sm\:p-8 { padding: calc(var(--spacing) * 8); }  .sm\:px-0 { padding-inline: calc(var(--spacing) * 0); }  .sm\:px-4 { padding-inline: calc(var(--spacing) * 4); }  .sm\:py-4 { padding-block: calc(var(--spacing) * 4); }  .sm\:pl-14 { padding-left: calc(var(--spacing) * 14); }  .sm\:text-3xl { font-size: var(--text-3xl); line-height: var(--tw-leading,var(--text-3xl--line-height)); }  .sm\:text-base { font-size: var(--text-base); line-height: var(--tw-leading,var(--text-base--line-height)); }}@media (min-width: 768px) {  .md\:visible { visibility: visible; }  .md\:inline { display: inline; }  .md\:h-screen { height: 100vh; }  .md\:w-80 { width: calc(var(--spacing) * 80); }  .md\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0px, 1fr)); }  .md\:flex-row { flex-direction: row; }  .md\:overflow-hidden { overflow: hidden; }  .md\:overflow-y-auto { overflow-y: auto; }  .md\:p-12 { padding: calc(var(--spacing) * 12); }  .md\:text-4xl { font-size: var(--text-4xl); line-height: var(--tw-leading,var(--text-4xl--line-height)); }  .md\:text-lg { font-size: var(--text-lg); line-height: var(--tw-leading,var(--text-lg--line-height)); }  .md\:text-xs { font-size: var(--text-xs); line-height: var(--tw-leading,var(--text-xs--line-height)); }}.prose-headings\:font-serif :where(h1, h2, h3, h4, h5, h6, th):not(:where([class~="not-prose"], [class~="not-prose"] *)), .prose-p\:font-serif :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-family: var(--font-serif); }.prose-p\:leading-relaxed :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); }.prose-p\:text-neutral-700 :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--color-neutral-700); }@property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }@property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }@property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }@property --tw-rotate-x { syntax: "*"; inherits: false; }@property --tw-rotate-y { syntax: "*"; inherits: false; }@property --tw-rotate-z { syntax: "*"; inherits: false; }@property --tw-skew-x { syntax: "*"; inherits: false; }@property --tw-skew-y { syntax: "*"; inherits: false; }@property --tw-scroll-snap-strictness { syntax: "*"; inherits: false; initial-value: proximity; }@property --tw-space-y-reverse { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-space-x-reverse { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-divide-y-reverse { syntax: "*"; inherits: false; initial-value: 0; }@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }@property --tw-gradient-position { syntax: "*"; inherits: false; }@property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }@property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }@property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }@property --tw-gradient-stops { syntax: "*"; inherits: false; }@property --tw-gradient-via-stops { syntax: "*"; inherits: false; }@property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }@property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }@property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }@property --tw-leading { syntax: "*"; inherits: false; }@property --tw-font-weight { syntax: "*"; inherits: false; }@property --tw-tracking { syntax: "*"; inherits: false; }@property --tw-ordinal { syntax: "*"; inherits: false; }@property --tw-slashed-zero { syntax: "*"; inherits: false; }@property --tw-numeric-figure { syntax: "*"; inherits: false; }@property --tw-numeric-spacing { syntax: "*"; inherits: false; }@property --tw-numeric-fraction { syntax: "*"; inherits: false; }@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-shadow-color { syntax: "*"; inherits: false; }@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }@property --tw-ring-color { syntax: "*"; inherits: false; }@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-inset-ring-color { syntax: "*"; inherits: false; }@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-ring-inset { syntax: "*"; inherits: false; }@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0; }@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }@property --tw-outline-style { syntax: "*"; inherits: false; initial-value: solid; }@property --tw-blur { syntax: "*"; inherits: false; }@property --tw-brightness { syntax: "*"; inherits: false; }@property --tw-contrast { syntax: "*"; inherits: false; }@property --tw-grayscale { syntax: "*"; inherits: false; }@property --tw-hue-rotate { syntax: "*"; inherits: false; }@property --tw-invert { syntax: "*"; inherits: false; }@property --tw-opacity { syntax: "*"; inherits: false; }@property --tw-saturate { syntax: "*"; inherits: false; }@property --tw-sepia { syntax: "*"; inherits: false; }@property --tw-drop-shadow { syntax: "*"; inherits: false; }@property --tw-drop-shadow-color { syntax: "*"; inherits: false; }@property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }@property --tw-drop-shadow-size { syntax: "*"; inherits: false; }@property --tw-backdrop-blur { syntax: "*"; inherits: false; }@property --tw-backdrop-brightness { syntax: "*"; inherits: false; }@property --tw-backdrop-contrast { syntax: "*"; inherits: false; }@property --tw-backdrop-grayscale { syntax: "*"; inherits: false; }@property --tw-backdrop-hue-rotate { syntax: "*"; inherits: false; }@property --tw-backdrop-invert { syntax: "*"; inherits: false; }@property --tw-backdrop-opacity { syntax: "*"; inherits: false; }@property --tw-backdrop-saturate { syntax: "*"; inherits: false; }@property --tw-backdrop-sepia { syntax: "*"; inherits: false; }@property --tw-duration { syntax: "*"; inherits: false; }@property --tw-ease { syntax: "*"; inherits: false; }@keyframes spin {   100% { transform: rotate(360deg); }}@keyframes pulse {   50% { opacity: 0.5; }}      .pcg-results-list { display: flex; flex-direction: column; list-style: none; margin: 0; padding: 0; }      .pcg-result-item { margin: 0; padding: 0; list-style: none; }      .pcg-result-btn { display: flex; width: 100%; align-items: center; justify-content: space-between; padding: 1rem; border: none; background: transparent; cursor: pointer; text-align: left; transition: background 0.2s; height: 76px; }      .pcg-result-btn.hovered { background-color: #f9fafb; }      .pcg-result-border { border-bottom: 1px solid #f5f5f5; }      .pcg-result-content { display: flex; flex-direction: column; justify-content: center; overflow: hidden; padding-right: 1rem; flex: 1; }      .pcg-result-meta-row { display: flex; align-items: center; gap: 0.5rem; overflow: hidden; }      .pcg-result-title { color: #000000; font-weight: bold; font-size: 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }      .pcg-meta-date { color: #737373; font-size: 0.75rem; text-transform: uppercase; letter-spacing: -0.025em; flex-shrink: 0; }      .pcg-result-summary { color: #737373; font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 0.25rem; }      .pcg-result-actions { display: flex; align-items: center; gap: 1rem; flex: none; }      .pcg-score { color: #DC1F26; font-weight: 900; font-size: 1.25rem; font-style: italic; }      .pcg-result-arrow { color: #d4d4d4; transition: color 0.2s; }      .pcg-reader-msg { text-align: center; padding: 2rem; color: #737373; }      .pcg-reader-loading { display: flex; justify-content: center; align-items: center; height: 100%; min-height: 400px; }      .pcg-reader-loading p { color: #DC1F26; }      .pcg-prose-content { max-width: 65ch; margin: 0 auto; padding: 0 0.5rem; }      .pcg-reader-header { margin-bottom: 2rem; }      .pcg-reader-title { font-size: 1.75rem; font-weight: bold; line-height: 1.2; margin-bottom: 1rem; }      .pcg-reader-meta { display: flex; gap: 0.75rem; align-items: center; font-size: 0.875rem; font-weight: 500; color: #52525b; text-transform: uppercase; letter-spacing: 0.05em; }      .pcg-reader-meta-divider { color: #d4d4d8; }      .pcg-reader-body { line-height: 1.6; color: #262626; font-size: 1.125rem; }      .pcg-prose-content img { width: 100%; height: auto; margin: 1.5rem 0; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); border-radius: 0.5rem; }       .pcg-prose-content a { color: #e11d48; text-decoration: none; font-weight: 500; }       .pcg-prose-content a:hover { text-decoration: underline; }       .pcg-prose-content p { margin-bottom: 1.5em !important; display: block !important; }    </style></head><body style="margin:0; padding:0; background:transparent;">  <div style="position: relative;">    <div class="w-full max-w-2xl mx-auto flex justify-center" id="widget-1bec2uw"><div class="w-full max-w-2xl mx-auto font-sans relative"><div id="pcg-search-container" class="bg-[#ededed] p-2 sm:p-3 rounded-full shadow-sm relative z-20 flex items-center"><div class="relative w-full text-sm sm:text-base md:text-lg"><div class="absolute left-4 top-1/2 -translate-y-1/2 text-[#DC1F26]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search w-5 h-5 sm:w-6 sm:h-6" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></div><input id="pcg-search" placeholder="Search our 104 gaming mouse reviews" class="w-full bg-white border-2 border-[#DC1F26] rounded-full py-3 sm:py-4 pl-12 sm:pl-14 pr-10 outline-none text-black placeholder-neutral-500 shadow-inner focus:ring-4 focus:ring-[#DC1F26]/20 transition-all font-medium text-ellipsis overflow-hidden" type="text" value=""></div></div><div id="pcg-footer-stats" class="mt-4 text-center text-sm sm:text-base font-semibold text-neutral-600 px-4">PC Gamer has reviewed <span id="pcg-total-reviews">1336</span> PC gaming goodies since 2020</div></div>      <section id="pcg-dropdown-container" class="absolute top-[76px] sm:top-[88px] left-2 right-2 sm:left-3 sm:right-3 z-50 bg-white border-2 border-[#DC1F26] rounded-2xl shadow-xl flex-col overflow-hidden" style="display: none; max-height: 380px;">        <header style="display: flex; align-items: center; justify-content: space-between; background: #fafafa; padding: 0.75rem 1rem; border-bottom: 1px solid #f5f5f5;">          <h3 id="pcg-dropdown-title" style="font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: #737373; margin: 0;">Latest Reviews</h3>          <div style="display: flex; align-items: center;">            <span style="font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: #737373; margin-right: 1.25rem; user-select: none;">Score</span>            <button id="pcg-close-btn" aria-label="Close" style="color: #a3a3a3; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0;">               <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>            </button>          </div>        </header>        <nav aria-label="Search Results" id="pcg-results" style="overflow-y: auto;">        </nav>      </section>            <article id="pcg-reader-container" class="absolute top-[80px] sm:top-[92px] left-2 right-2 sm:left-3 sm:right-3 z-[100] bg-white border-2 border-[#DC1F26] rounded-2xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.4)] flex-col overflow-hidden" style="display: none; height: 600px;">        <header style="display: flex; align-items: center; justify-content: space-between; padding: 1rem; border-bottom: 1px solid #f5f5f5; flex: none; background: white; position: relative;">          <div style="flex: 1;">            <span style="font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #a3a3a3;">Reader view</span>          </div>                    <div style="position: absolute; left: 50%; transform: translateX(-50%); text-align: center;" id="pcg-reader-link-container">          </div>          <div style="flex: 1; display: flex; justify-content: flex-end;">            <button id="pcg-reader-close" aria-label="Close Reader" style="color: #a3a3a3; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0;">              <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>            </button>          </div>        </header>        <div id="pcg-reader-content" style="flex: 1; padding: 1rem 1rem 3rem; overflow-y: auto; background: white; font-family: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;">        </div>      </article>    </div>  </div>        <script>        const API_BASE = "https://airedale-version-review-widget-builder.ai.studio";        const CATEGORY = "Gaming Mice";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%22WMXAonUQQtoWEioUkjrHQ9%22%2C%22title%22%3A%22AngryMiao%20AM%20Infinity.97%20mouse%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fangrymiao-am-infinity-97-mouse-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-19T12%3A20%3A28Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJFKjNACJuiQRvtSxGHrSRo.jpg%22%2C%22strapline%22%3A%22Flagship%20speed%2C%20boutique%20flair.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22gaming%20mouse%22%2C%22Asus%22%5D%2C%22score%22%3A88%2C%22summary%22%3A%22Flagship%20speed%2C%20boutique%20flair.%22%7D%2C%7B%22id%22%3A%22VoC7Nefyvxfz8vx7DkQY6G%22%2C%22title%22%3A%22Razer%20Naga%20V3%20Pro%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-naga-v3-pro-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-18T09%3A18%3A44Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbxiLAwj2yKPCob3YQrKmwP.jpg%22%2C%22strapline%22%3A%22An%20upgrade%20in%20pretty%20much%20every%20way%20(if%20you%20ignore%20the%20audible%20ping%20of%20the%20switches).%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22gaming%20mouse%22%2C%22Asus%22%5D%2C%22score%22%3A84%2C%22summary%22%3A%22An%20upgrade%20in%20pretty%20much%20every%20way%20(if%20you%20ignore%20the%20audible%20ping%20of%20the%20switches).%22%7D%2C%7B%22id%22%3A%229rH2aY9tFgUwQt6sayPTuA%22%2C%22title%22%3A%22Asus%20ROG%20Harpe%20II%20Extreme%20Edition%2020%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fasus-rog-harpe-ii-extreme-edition-20-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-14T12%3A04%3A08Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5Z5HG6hDyVtLXotzVznxzd.jpg%22%2C%22strapline%22%3A%22The%20most%20luxurious%20gaming%20mouse%20I've%20managed%20to%20get%20grubby.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22gaming%20mouse%22%2C%22Asus%22%2C%22Asus%20ROG%20Harpe%20II%20Extreme%20Edition%2020%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22The%20most%20luxurious%20gaming%20mouse%20I've%20managed%20to%20get%20grubby.%22%7D%2C%7B%22id%22%3A%227Ck8uEtqvvSPUEMBEB3WBL%22%2C%22title%22%3A%22Pulsar%20Feinmann%20F01%20Noctua%20Edition%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fpulsar-feinmann-f01-noctua-edition-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-11T14%3A22%3A21Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FVwUWxAQNqmnvcuJzK3zznH.jpg%22%2C%22strapline%22%3A%22Breezy%20and%20comfortable%2C%20but%20I'm%20not%20a%20fan%20of%20its%20price%20and%20battery.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22budget%20gaming%20mice%22%2C%22gaming%20mouse%22%2C%22budget%20gaming%20mouse%22%2C%22Noctua%22%5D%2C%22score%22%3A73%2C%22summary%22%3A%22Breezy%20and%20comfortable%2C%20but%20I'm%20not%20a%20fan%20of%20its%20price%20and%20battery.%22%7D%2C%7B%22id%22%3A%22oFURMEnCZ5FiByvBsJjKtG%22%2C%22title%22%3A%22Mchose%20K7%20V2%20Ultra%2B%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fmchose-k7-v2-ultra-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-31T11%3A12%3A44Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJPWDDosBpyPGimW3CEGTPg.jpg%22%2C%22strapline%22%3A%22Great%20specs%20with%20a%20Viper%20V3%2FV4%20Pro's%20shape%2C%20for%20less.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22gaming%20mice%22%2C%22MCHOSE%22%2C%22Mchose%20K7%20V2%20Ultra%2B%22%2C%22Razer%20Viper%20V4%20Pro%22%5D%2C%22score%22%3A89%2C%22summary%22%3A%22Great%20specs%20with%20a%20Viper%20V3%2FV4%20Pro's%20shape%2C%20for%20less.%22%7D%2C%7B%22id%22%3A%2274wWM4f8JebSDZj7RERSUU%22%2C%22title%22%3A%22Asus%20ProArt%20Mouse%20MD301%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fasus-proart-mouse-md301%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-08T16%3A12%3A04Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FCDsLPYCyTeZscFLF2sjGHQ.jpg%22%2C%22strapline%22%3A%22A%20professional%20design%2C%20but%20with%20enough%20quirks%20to%20give%20me%20pause.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Asus%22%2C%22ergonomic%20mouse%22%2C%22Logitech%20MX%20Master%204%22%2C%22mouse%22%2C%22polling%20rate%22%2C%22mouse%20sensor%22%2C%22Asus%20ProArt%20Mouse%20MD301%22%5D%2C%22score%22%3A71%2C%22summary%22%3A%22A%20professional%20design%2C%20but%20with%20enough%20quirks%20to%20give%20me%20pause.%22%7D%2C%7B%22id%22%3A%22K53srydpKdGNFuLaqCTAra%22%2C%22title%22%3A%22Logitech%20Mobi%20Fold%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-mobi-fold-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-07T11%3A41%3A33Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FFgQTQfXDfPekUFgZ9dwEZ7.jpg%22%2C%22strapline%22%3A%22Is%20that%20a%20mouse%20in%20your%20pocket%20or%20do%20you%20need%20to%20see%20a%20doctor%3F%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22gaming%20mouse%22%2C%22travel%20mouse%22%2C%22Logitech%22%2C%22Mobi%20Fold%22%5D%2C%22score%22%3A65%2C%22summary%22%3A%22Is%20that%20a%20mouse%20in%20your%20pocket%20or%20do%20you%20need%20to%20see%20a%20doctor%3F%22%7D%2C%7B%22id%22%3A%22CpybdgtNoaxnCfqj8qUD36%22%2C%22title%22%3A%22Logitech%20G305%20X%20Superlight%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-g305-x-superlight-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-19T15%3A37%3A08Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FpTZdszAGGB42CfodWGhPqb.jpg%22%2C%22strapline%22%3A%22A%20solid%20and%20fairly%20plain%20upgrade%20on%20the%20original%2C%20but%20not%20wholly%20better%20either.%20%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Mice%22%2C%22gaming%20mice%22%2C%22budget%20gaming%20mice%22%2C%22gaming%20mouse%22%2C%22budget%20gaming%20mouse%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20solid%20and%20fairly%20plain%20upgrade%20on%20the%20original%2C%20but%20not%20wholly%20better%20either.%20%22%7D%2C%7B%22id%22%3A%229yFaBcP8M4acKy3vvNHd3S%22%2C%22title%22%3A%22MSI%20Versa%20300%20Wireless%208K%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fmsi-versa-300-wireless-8k-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-15T15%3A35%3A37Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJBmtjZP3tFxWBytcBD26Jb.jpg%22%2C%22strapline%22%3A%22Surprisingly%20potent.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22MSI%22%2C%22gaming%20mouse%22%2C%228K%22%2C%22mouse%22%2C%22gaming%20mice%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22Surprisingly%20potent.%22%7D%2C%7B%22id%22%3A%22PnfkWCANTGjwi9CK2iZQBN%22%2C%22title%22%3A%22ProtoArc%20EM25%20ergonomic%20mouse%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fprotoarc-em25-ergonomic-mouse-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-12T16%3A31%3A51Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FZwZJejJtPeZcajbcwMNWfX.jpg%22%2C%22strapline%22%3A%22Rough%20around%20the%20edges.%22%2C%22categories%22%3A%5B%22Gaming%20Mice%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22ergonomic%20mouse%22%2C%22ProtoArc%22%2C%22ProtoArc%20EM25%22%2C%22RF%202.4%20GHz%22%2C%22Bluetooth%22%2C%22wireless%20mouse%22%5D%2C%22score%22%3A40%2C%22summary%22%3A%22Rough%20around%20the%20edges.%22%7D%5D"));                const searchInput = document.getElementById("pcg-search");        const resultsContainer = document.getElementById("pcg-results");        const dropdownContainer = document.getElementById("pcg-dropdown-container");        const closeBtn = document.getElementById("pcg-close-btn");        const titleSpan = document.getElementById("pcg-dropdown-title");                const readerContainer = document.getElementById("pcg-reader-container");        const readerContent = document.getElementById("pcg-reader-content");        const readerCloseBtn = document.getElementById("pcg-reader-close");                let debounceTimer;                function updateIframeHeight(isDropdownOpen, isReaderOpen = false) {          let newHeight = '140px';          if (isReaderOpen) {            newHeight = '720px';          } else if (isDropdownOpen) {            newHeight = '500px';          }                    let resizedSuccessfully = false;          try {            if (window.frameElement) {              window.frameElement.style.height = newHeight;              resizedSuccessfully = true;            }          } catch (e) {            // Ignore cross-origin error when accessing frameElement          }                    if (!resizedSuccessfully && window.parent && window.parent !== window) {            try {              // Send message to parent only for cross-origin resizing               // using '*' to avoid target origin mismatch errors              window.parent.postMessage({ type: 'pcg-widget-resize', height: newHeight }, '*');            } catch (e) {}          }        }        function closeReader() {          readerContainer.style.display = 'none';          readerContent.innerHTML = '';          updateIframeHeight(dropdownContainer.style.display === 'flex', false);        }        if (readerCloseBtn) readerCloseBtn.addEventListener('click', closeReader);                function closeDropdown() {          dropdownContainer.style.display = 'none';          updateIframeHeight(false, readerContainer.style.display === 'flex');        }                function openDropdown() {          dropdownContainer.style.display = 'flex';          closeReader();          updateIframeHeight(true, false);        }                if (closeBtn) closeBtn.addEventListener("click", closeDropdown);                document.addEventListener("click", (e) => {           if (!searchInput.contains(e.target) && !dropdownContainer.contains(e.target) && !readerContainer.contains(e.target)) {               closeDropdown();           }        });                const TOTAL_COUNT = 1336;        const CATEGORY_COUNT = 76;        function initializeStats() {           const totalSpan = document.getElementById("pcg-total-reviews");           if (totalSpan) totalSpan.textContent = TOTAL_COUNT;                      if (searchInput && CATEGORY_COUNT > 0) {             function formatCat(cat) {               if (cat === "PC gaming hardware") return "PC gaming hardware";               if (cat === "Handheld Gaming PCs") return "handheld gaming PC";                if (cat === "Gaming PCs") return "gaming PC";               if (cat === "Gaming Mice") return "gaming mouse";               if (cat === "Memory" || cat === "Cooling" || cat === "Lighting" || cat === "Hardware") return cat.toLowerCase();               if (cat === "Earbuds & Headphones") return "earbud & headphone";               return cat.replace(/s$/i, '').toLowerCase();             }             const formattedCat = formatCat(CATEGORY);             searchInput.placeholder = CATEGORY_COUNT > 50 ? "Search our " + CATEGORY_COUNT + " " + formattedCat + " reviews" : "Search our " + formattedCat + " reviews";           }        }                initializeStats();        function fetchResults(q) {          if (q) {             titleSpan.textContent = "Search Results";          } else {             titleSpan.textContent = "Latest " + (CATEGORY === "PC gaming hardware" ? "PC gaming hardware" : CATEGORY) + " Reviews";          }                     if (!q) {            renderResults(LOCAL_REVIEWS);            return;          }                    resultsContainer.innerHTML = '<p style="padding:2rem;text-align:center;color:#737373;">Loading...</p>';                    fetch(API_BASE + "/api/reviews?category=" + encodeURIComponent(CATEGORY) + "&q=" + encodeURIComponent(q) + "&limit=20")            .then(res => res.json())            .then(data => {               renderResults(data.results || []);            })            .catch(err => {               console.error("Search failed:", err);               resultsContainer.innerHTML = '<p style="padding:2rem;text-align:center;color:#DC1F26;">Error searching reviews.</p>';            });        }                function renderResults(results) {          if(!results || results.length === 0) {            resultsContainer.innerHTML = '<p class="pcg-reader-msg">No results found.</p>';            return;          }          let html = '<ul class="pcg-results-list">';          results.forEach((res, i) => {            let scoreHtml = res.score ? '<div class="pcg-score" aria-label="Score: ' + res.score + '">' + res.score + '</div>' : '';                        // Format URL properly            let targetUrl = res.url.startsWith("http") ? res.url : "https://www.pcgamer.com" + res.url;                        let borderClass = i < results.length - 1 ? 'pcg-result-border' : '';                        let dateHtml = '';            if (res.publishDate) {              try {                let dateStr = new Date(res.publishDate).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });                dateHtml = '<span class="pcg-meta-date">' + dateStr + '</span>';              } catch(e) {}            }                        let subHtml = '<span class="pcg-result-summary">' + (res.summary || "") + '</span>';                        html += '<li class="pcg-result-item"><button aria-label="Read ' + (res.title || "Review").replace(/"/g, '&quot;') + '" onclick="openReaderInPage(\'' + targetUrl + '\')" class="pcg-result-btn ' + borderClass + '" onmouseover="this.classList.add(\'hovered\')" onmouseout="this.classList.remove(\'hovered\')" >' +                  '<div class="pcg-result-content">' +                    '<div class="pcg-result-meta-row">' +                       '<span class="pcg-result-title">' + (res.title || "Review") + '</span>' +                      dateHtml +                     '</div>' +                    subHtml +                  '</div>' +                  '<div class="pcg-result-actions">' +                    scoreHtml +                    '<span class="pcg-result-arrow" aria-hidden="true">→</span>' +                  '</div>' +              '</button></li>';          });          html += '</ul>';          resultsContainer.innerHTML = html;                    updateJSONLD(results);        }        function updateJSONLD(results) {          let ldScript = document.getElementById('pcg-json-ld');          if (!ldScript) {            ldScript = document.createElement('script');            ldScript.type = 'application/ld+json';            ldScript.id = 'pcg-json-ld';            document.head.appendChild(ldScript);          }                    const itemListElements = results.slice(0, 50).map((res, index) => {            let targetUrl = res.url.startsWith("http") ? res.url : "https://www.pcgamer.com" + res.url;            let itemName = (res.title || "Product").replace(/\s+review$/i, '');            let schemaItem = {              "@type": "Product",              "name": itemName,              "image": res.image || targetUrl,              "review": {                "@type": "Review",                "url": targetUrl,                "name": res.title || "Review",                "datePublished": res.publishDate || new Date().toISOString().split('T')[0],                "author": {                  "@type": "Organization",                  "name": "PC Gamer"                },                "publisher": {                  "@type": "Organization",                  "name": "PC Gamer"                }              }            };            if (res.score) {              schemaItem.review.reviewRating = {                "@type": "Rating",                "ratingValue": res.score,                "bestRating": "100",                "worstRating": "1"              };            }            return {              "@type": "ListItem",              "position": index + 1,              "item": schemaItem            };          });          const schema = {            "@context": "https://schema.org",            "@type": "ItemList",            "itemListElement": itemListElements          };          ldScript.textContent = JSON.stringify(schema);        }        function openReaderInPage(targetUrl) {          closeDropdown();          readerContainer.style.display = 'flex';          updateIframeHeight(false, true);          const readerLinkContainer = document.getElementById("pcg-reader-link-container");          if (readerLinkContainer) {            readerLinkContainer.innerHTML = '<a href="' + targetUrl + '" target="_blank" rel="noopener noreferrer" class="bg-[#DC1F26] text-white px-3 py-1.5 rounded-full font-sans text-[11px] md:text-xs font-bold hover:bg-black transition-colors border-2 border-[#DC1F26] hover:border-black shadow-sm inline-block" style="text-decoration: none;">Read full review</a>';          }          readerContent.innerHTML = '<div class="pcg-reader-loading"><p>Loading article...</p></div>';          fetch(API_BASE + "/api/content?q=" + btoa(targetUrl))            .then(res => res.json())            .then(data => {               if(!data || !data.content) {                 readerContent.innerHTML = '<div class="pcg-reader-msg">Could not load article content.</div>';                 return;               }               let html = '<div class="pcg-prose-content">';               html += '<header class="pcg-reader-header">';               html += '<h1 class="pcg-reader-title">' + (data.title || '') + '</h1>';                              if (data.byline || data.date) {                 html += '<div class="pcg-reader-meta">';                 if (data.byline) {                   html += '<span>BY ' + data.byline + '</span>';                 }                 if (data.byline && data.date) {                   html += '<span class="pcg-reader-meta-divider">|</span>';                 }                 if (data.date) {                   html += '<span>PUBLISHED ' + data.date + '</span>';                 }                 html += '</div>';               }               html += '</header>';                              html += '<div class="pcg-reader-body">';               html += data.content;               html += '</div></div>';                              readerContent.innerHTML = html;            })            .catch(err => {               console.error(err);               readerContent.innerHTML = '<div class="pcg-reader-msg">An error occurred loading the article.</div>';            });        }        const searchBoxContainer = document.getElementById("pcg-search-container");        if (searchBoxContainer) {           searchBoxContainer.addEventListener("click", () => {              openDropdown();           });        }                if (searchInput) {          searchInput.addEventListener("focus", () => {             openDropdown();          });          searchInput.addEventListener("click", () => {             openDropdown();          });          searchInput.addEventListener("input", (e) => {            openDropdown();            clearTimeout(debounceTimer);            debounceTimer = setTimeout(() => fetchResults(e.target.value), 500);          });                    // Initial render with embedded cache          fetchResults("");                    if (INITIALLY_OPEN) {            openDropdown();          }                    // Background revalidate          fetch(API_BASE + "/api/reviews?category=" + encodeURIComponent(CATEGORY) + "&limit=10")            .then(res => res.json())            .then(data => {               if (data && data.results && data.results.length > 0) {                 LOCAL_REVIEWS = data.results;                 // If the user hasn't typed anything yet, refresh the UI silently                 if (!searchInput.value) {                   fetchResults("");                 }               }            })            .catch(err => console.error("Background refresh failed:", err));        }      </script>    </body></html>"   width="100%"   height="140"   style="border: none; width: 100%; max-width: 1024px; margin: 0 auto; display: block; background: transparent; transition: height 0.3s ease-out;"   title="PC Gamer Gaming Mice Widget"></iframe></div><h2 class="article-body__section" id="section-prime-day-gaming-mouse-deals"><span>Prime Day gaming mouse deals</span></h2><div class="product"><a data-dimension112="8f407686-bb39-11f1-af31-3179bb99ad85" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="$25.99" href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1401px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qgFqUinn2HCKHEThJ47QpC" name="1636734797.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1401" height="1401" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" target="_blank" rel="nofollow" data-dimension112="8f407686-bb39-11f1-af31-3179bb99ad85" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="$25.99">G203 | Wired: was $34.99 now $25.99</a></strong><br>Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.</p><p><strong>Key specs: Wired | 8,000 DPI | Right-handed</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/site/logitech-g203-lightsync-wired-optical-gaming-mouse-with-8000-dpi-sensor-white/6409362.p?skuId=6409362" target="_blank">Best Buy $39.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" target="_blank" rel="nofollow" data-dimension112="8f407686-bb39-11f1-af31-3179bb99ad85" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="$25.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f40774e-bb39-11f1-a4c7-7f324f579c2b" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="$29.99" href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:212px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="krHdzSvvW5EskC6Keg74P9" name="1700740513.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9-1920-80.jpg" mos="" align="middle" fullscreen="" width="212" height="212" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" target="_blank" rel="nofollow" data-dimension112="8f40774e-bb39-11f1-a4c7-7f324f579c2b" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="$29.99">G305 Lightspeed | Wireless: was $49.99 now $29.99</a></strong><br>The Logitech G305 Lightspeed is our<a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank"> favorite budget wireless mouse</a>—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills.</p><p><strong>Key specs: Wireless | 12,000 DPI | Right-handed</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/logitech-g305-lightspeed-wireless-optical-6-programmable-button-gaming-mouse-with-12000-dpi-hero-sensor-wireless-white/J7H7ZY2ZYR" target="_blank">Best Buy $49.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" target="_blank" rel="nofollow" data-dimension112="8f40774e-bb39-11f1-a4c7-7f324f579c2b" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="$29.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f4076ea-bb39-11f1-bd4c-a987d18ae2e1" data-action="Deal Block" data-label="Model O Eternal | Wired" data-dimension48="Model O Eternal | Wired" data-dimension25="$34.99" href="https://www.amazon.com/dp/B0F9B8L5X6?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="hAMTZaKrcWhNeajCdgFnvR" name="PCGamer Deal Block - 2025-11-25T153526.633" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/hAMTZaKrcWhNeajCdgFnvR-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0F9B8L5X6?th=1" target="_blank" rel="nofollow" data-dimension112="8f4076ea-bb39-11f1-bd4c-a987d18ae2e1" data-action="Deal Block" data-label="Model O Eternal | Wired" data-dimension48="Model O Eternal | Wired" data-dimension25="$34.99">Model O Eternal | Wired: was $39.99 now $34.99</a></strong><br>You aren't packing an incredibly high DPI or polling rate with this mouse, but you are getting strong performance for the price, as well as a lightweight, comfortable build, and solid software. Cheap and cheerful is the aim here.</p><p><strong>Key specs: 12,000 DPI | 300 IPS |  1,000 Hz | 55 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/glorious-model-o-eternal-lightweight-wired-optical-gaming-mouse-with-dual-zone-rgb-lighting-wired-matte-white/J39TGZ8SRL?irclickid=2FVW4gUPuxyKTPQxHiQQfQIVUkpWKjQdV36f2U0&irgwc=1&afsrc=1&ref=198&loc=Future%20Dedicated%20Account&acampID=0&mpid=1943169&affgroup=%22Content%22" target="_blank">Best Buy $34.99</a><strong></strong><a class="view-deal button" href="https://www.amazon.com/dp/B0F9B8L5X6?th=1" target="_blank" rel="nofollow" data-dimension112="8f4076ea-bb39-11f1-bd4c-a987d18ae2e1" data-action="Deal Block" data-label="Model O Eternal | Wired" data-dimension48="Model O Eternal | Wired" data-dimension25="$34.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407834-bb39-11f1-8a08-23fecaf5d2f8" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="$37.99" href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="SaXBHtPWoMGvzcyvsLNQQX" name="1698934268.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" target="_blank" rel="nofollow" data-dimension112="8f407834-bb39-11f1-8a08-23fecaf5d2f8" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="$37.99">G502 Hero | Wired: was $69.99 now $37.99</a></strong><br>This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. </p><p><strong>Key specs: Wired | 25,600 DPI | Right-handed</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/site/logitech-g502-hero-wired-optical-gaming-mouse-with-rgb-lighting-black/6265133.p?skuId=6265133" target="_blank">Best Buy $69.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" target="_blank" rel="nofollow" data-dimension112="8f407834-bb39-11f1-8a08-23fecaf5d2f8" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="$37.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407898-bb39-11f1-9fe6-a57bc84d8df7" data-action="Deal Block" data-label="Retro R8 | Wireless" data-dimension48="Retro R8 | Wireless" data-dimension25="$44.21" href="https://www.amazon.com/Charging-Optical-Wireless-Programmable-Switches/dp/B0F37BTPPH" 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="6ftyiD7DphdvJ2Z5PfoAKh" name="PCGamer Deal Block (1)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6ftyiD7DphdvJ2Z5PfoAKh-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Charging-Optical-Wireless-Programmable-Switches/dp/B0F37BTPPH" target="_blank" rel="nofollow" data-dimension112="8f407898-bb39-11f1-9fe6-a57bc84d8df7" data-action="Deal Block" data-label="Retro R8 | Wireless" data-dimension48="Retro R8 | Wireless" data-dimension25="$44.21">Retro R8 | Wireless: was $49.99 now $44.21</a></strong><br>Our James <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">reviewed the 8BitDo Retro R8</a>, giving it an 87%, and for good reason. It's a mouse with a super unique look, good specs for the price, and it even comes with a cute charging stand. The retro feel is definitely something to get used to, with buttons that are sunken into the mouse itself, but it's a joy to use regardless. </p><p><strong>Key specs: up to 8,000 Hz polling | 26,000 DPI | 77 g | up to 100-hour battery life</strong></p><p><strong>Price check: </strong><a href="https://www.newegg.com/p/32K-00R0-00033" target="_blank">Newegg $49.99</a><em><strong></strong></em><a class="view-deal button" href="https://www.amazon.com/Charging-Optical-Wireless-Programmable-Switches/dp/B0F37BTPPH" target="_blank" rel="nofollow" data-dimension112="8f407898-bb39-11f1-9fe6-a57bc84d8df7" data-action="Deal Block" data-label="Retro R8 | Wireless" data-dimension48="Retro R8 | Wireless" data-dimension25="$44.21">View Deal</a></p></div><div class="product"><a data-dimension112="8f4078fc-bb39-11f1-8e08-352cc27b5839" data-action="Deal Block" data-label="Burst II Air | Wireless" data-dimension48="Burst II Air | Wireless" data-dimension25="$54.99" href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1504px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="oHpVvSDqMgFC5rnRe2pUnQ" name="1790601251.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oHpVvSDqMgFC5rnRe2pUnQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1504" height="1494" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" target="_blank" rel="nofollow" data-dimension112="8f4078fc-bb39-11f1-8e08-352cc27b5839" data-action="Deal Block" data-label="Burst II Air | Wireless" data-dimension48="Burst II Air | Wireless" data-dimension25="$54.99">Burst II Air | Wireless: was $99.99 now $54.99</a></strong><br>We gave this mouse an 85% in <a href="https://www.pcgamer.com/hardware/gaming-mice/turtle-beach-burst-ii-air-review/" target="_blank">our review</a>, praising its very low weight, huge battery life, and super-responsive feel. It doesn't have quite as many fun extras as competitors and can be a bit of a fingerprint magnet, but it is a super solid choice at this price.</p><p><strong>Key specs: Wireless | 26,000 DPI | Symmetrical</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/site/turtle-beach-burst-ii-air-ultra-lightweight-wireless-symmetrical-gaming-mouse-with-bluetooth-120-hour-battery-black/6579301.p?skuId=6579301" target="_blank">Best Buy $99.99</a><a class="view-deal button" href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" target="_blank" rel="nofollow" data-dimension112="8f4078fc-bb39-11f1-8e08-352cc27b5839" data-action="Deal Block" data-label="Burst II Air | Wireless" data-dimension48="Burst II Air | Wireless" data-dimension25="$54.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407a28-bb39-11f1-9086-f5bfce42139a" data-action="Deal Block" data-label="DeathAdder V3 HyperSpeed | Wireless" data-dimension48="DeathAdder V3 HyperSpeed | Wireless" data-dimension25="$79.99" href="https://www.amazon.com/Razer-DeathAdder-HyperSpeed-Wireless-Gaming/dp/B0D4RF55QK/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="PCcmPTSb6k5nc2pqpvNUbN" name="razerdeathadderv3hyperspeed" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/PCcmPTSb6k5nc2pqpvNUbN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-DeathAdder-HyperSpeed-Wireless-Gaming/dp/B0D4RF55QK/" target="_blank" rel="nofollow" data-dimension112="8f407a28-bb39-11f1-9086-f5bfce42139a" data-action="Deal Block" data-label="DeathAdder V3 HyperSpeed | Wireless" data-dimension48="DeathAdder V3 HyperSpeed | Wireless" data-dimension25="$79.99">DeathAdder V3 HyperSpeed | Wireless: was $99.99 now $79.99</a></strong><br>Simple, lightweight, fast and accurate. What more do you need from a gaming mouse? Because it eschews all the fancy gadgets that so many mice have these days, you save a bundle of cash and get a really long battery life.</p><p><strong>Key specs: 26K sensor | Wireless | 55 g weight</strong></p><p><strong>Price check: </strong><a href="https://www.razer.com/gaming-mice/razer-deathadder-v3-hyperspeed/RZ01-05140100-R3U1" target="_blank">Razer $99.99</a><a class="view-deal button" href="https://www.amazon.com/Razer-DeathAdder-HyperSpeed-Wireless-Gaming/dp/B0D4RF55QK/" target="_blank" rel="nofollow" data-dimension112="8f407a28-bb39-11f1-9086-f5bfce42139a" data-action="Deal Block" data-label="DeathAdder V3 HyperSpeed | Wireless" data-dimension48="DeathAdder V3 HyperSpeed | Wireless" data-dimension25="$79.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407af0-bb39-11f1-ac92-315a3f6b90cd" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="$109.98" href="https://www.amazon.com/Logitech-Lightspeed-Left-Handed-Customizable-Switchable/dp/B0CJ4TPLRM" 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="Q3PxPrNWbFomndFenbZFge" name="PCGamer Deal Block - 2025-11-06T154608.374" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Q3PxPrNWbFomndFenbZFge-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Logitech-Lightspeed-Left-Handed-Customizable-Switchable/dp/B0CJ4TPLRM" target="_blank" rel="nofollow" data-dimension112="8f407af0-bb39-11f1-ac92-315a3f6b90cd" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="$109.98">G Pro 2 Lightspeed | Wireless: was $149.99 now $109.98</a></strong><br>Though it doesn't quite look as impressive as the Superlight 2, the G Pro 2 Lightspeed matches the same internals and is truly ambidextrous, thanks to swappable side buttons.</p><p><strong>Key specs: 44,000 DPI | 888 IPS | 88g accelerations | 4 side buttons</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/logitech-pro-2-lightspeed-lightweight-optical-hero-44k-dpi-gaming-mouse-with-4-customizable-and-switchable-magnetic-side-buttons-wireless-black/J7H7ZYG63P" target="_blank">Best Buy $149.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-Lightspeed-Left-Handed-Customizable-Switchable/dp/B0CJ4TPLRM" target="_blank" rel="nofollow" data-dimension112="8f407af0-bb39-11f1-ac92-315a3f6b90cd" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="$109.98">View Deal</a></p></div><div class="product"><a data-dimension112="8f407a8c-bb39-11f1-a6a1-47d2ea6d102e" data-action="Deal Block" data-label="Scimitar Elite Wireless SE" data-dimension48="Scimitar Elite Wireless SE" data-dimension25="$109.99" href="https://www.amazon.com/dp/B0F6NJYMWF?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="69nrk9QPJyYf8GEobHMCNi" name="Scimitar Elite Wireless SE" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/69nrk9QPJyYf8GEobHMCNi-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>An MMO mouse and a Stream Deck in one, this rodent is a bit heavy but great for productivity and MMO usage. In <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review" target="_blank" data-dimension112="8f407a8c-bb39-11f1-a6a1-47d2ea6d102e" data-action="Deal Block" data-label="Scimitar Elite Wireless SE" data-dimension48="Scimitar Elite Wireless SE" data-dimension25="$109.99">our review</a>, Hope said the Scimitar Elite Wireless SE "might not match the active use of lighter, more FPS-oriented esports mice, but it's a productivity and streaming powerhouse."</p><p><strong>Key specs: 16 buttons | 33K DPI | 1,000 Hz | 161 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/corsair-scimitar-elite-wireless-se-gaming-mouse-with-16-programmable-buttons-wireless-gun-metal-black/J39TSCH9HJ" target="_blank">Best Buy $123.99</a> | <a href="https://www.newegg.com/corsair-scimitar-elite-wireless-se-usb-bluetooth-bluetooth-2-4ghz-wired/p/N82E16826816225" target="_blank">Newegg $124.99</a><a class="view-deal button" href="https://www.amazon.com/dp/B0F6NJYMWF?th=1" target="_blank" rel="nofollow" data-dimension112="8f407a8c-bb39-11f1-a6a1-47d2ea6d102e" data-action="Deal Block" data-label="Scimitar Elite Wireless SE" data-dimension48="Scimitar Elite Wireless SE" data-dimension25="$109.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407bc2-bb39-11f1-8631-a57dfb7e727f" data-action="Deal Block" data-label="Viper V3 Pro | Wireless" data-dimension48="Viper V3 Pro | Wireless" data-dimension25="$110.30" href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5S/ref=sr_1_7_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="xR8QJpjHGx27FS3pZnYBj7" name="1790601520.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xR8QJpjHGx27FS3pZnYBj7-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1509" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5S/ref=sr_1_7_sspa" target="_blank" rel="nofollow" data-dimension112="8f407bc2-bb39-11f1-8631-a57dfb7e727f" data-action="Deal Block" data-label="Viper V3 Pro | Wireless" data-dimension48="Viper V3 Pro | Wireless" data-dimension25="$110.30">Viper V3 Pro | Wireless: was $159.99 now $110.30</a></strong><br>Razer doesn't play around with its compact Viper line-up. The V3 Pro is pretty light, feels great in hand, and tracks your movement like any other high-end mouse. It's top-tier and a little cheaper than the newer V4 Pro now.</p><p><strong>Key specs: 6 buttons | 35K DPI | 8,000 Hz | 70 g</strong><a class="view-deal button" href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5S/ref=sr_1_7_sspa" target="_blank" rel="nofollow" data-dimension112="8f407bc2-bb39-11f1-8631-a57dfb7e727f" data-action="Deal Block" data-label="Viper V3 Pro | Wireless" data-dimension48="Viper V3 Pro | Wireless" data-dimension25="$110.30">View Deal</a></p></div><h2 id="check-out-all-our-latest-deals-in-any-category">Check out all our latest deals in any category:</h2><div class="vizualizer-embed"><fc-author-commerce-widget data-fcaw-version="1" data-fcaw-full-bleed="false">  <style data-fcaw-host-protection>fc-author-commerce-widget[data-fcaw-version="1"] {  display: block !important;  width: 100% !important;  min-width: 0 !important;  max-width: none !important;  isolation: isolate !important;  contain: style !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]{  width: min(    1200px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1200px !important;  margin-left: var(    --fcaw-full-bleed-offset,    calc(50% - min(600px, 50vw))  ) !important;  margin-right: 0 !important;  position: relative !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]  #tg-df-spreadsheet-filters {  width: min(    1500px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1500px !important;  margin-left: calc(    (      100% -      min(1500px, var(--fcaw-viewport-width, 100vw))    ) / 2  ) !important;  margin-right: 0 !important;}fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::before,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::after {  box-sizing: border-box;}</style>  <div data-fcaw-fallback class="fcaw-v1-fallback">    <style>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with 'tg-df-' to prevent CMS style leakage.    */    .tg-df-container { user-select: text; -webkit-user-select: text;      container-type: inline-size;      container-name: tg-df;                  --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]    {      width: min(        1200px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1200px !important;      margin-left: calc(        (          100% -          min(1200px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;      position: relative !important;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]      #tg-df-spreadsheet-filters {      width: min(        1500px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1500px !important;      margin-left: calc(        (          100% -          min(1500px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;      position: relative;      z-index: 20;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      margin: 0 auto;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: var(--tg-df-blue);    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }        .tg-df-filters {      display: flex;      justify-content: center;      width: 100%;      gap: 12px;      margin: 0 auto;      max-width: 42rem;    }                 .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;      width: 100%;      max-width: 280px;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      width: 100%;      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }    .tg-df-scroll-btn {      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 4px;    }    .tg-df-scroll-btn.right {      right: 4px;    }    @container tg-df (max-width: 768px) {      .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;      margin: 0 auto;    }    .tg-df-filters {        justify-content: center;        width: 100%;        margin: 0 auto;        margin-bottom: -320px;        padding: 0 0 320px 0;        display: flex;        flex-wrap: nowrap;        gap: 8px;        overflow-x: auto;        overflow-y: hidden;        pointer-events: none;        scrollbar-width: none;        -webkit-overflow-scrolling: touch;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }      .tg-df-sort-wrapper {        pointer-events: auto;        flex: 0 0 auto;        width: 175px;        min-width: 175px;      }    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: calc(100% + 32px);      max-width: none;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;      margin: 0 -16px -16px -16px;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }    .tg-df-buying-guide-badge {      left: auto;      right: 12px;      max-width: calc(100% - 24px);      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges { position: absolute; bottom: 8px; left: 8px; display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 0; z-index: 10; }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-card-listings {      margin: 0 0 12px;    }    .tg-df-card-listings-title {      display: block;      color: var(--tg-df-text-muted);      font-size: 11px;      font-weight: 700;      letter-spacing: 0.45px;      line-height: 1.2;      margin-bottom: 4px;      text-transform: uppercase;    }    .tg-df-card-listings-links {      border-top: 1px solid var(--tg-df-border);    }    .tg-df-container .tg-df-card-listing-link {      align-items: center;      border-bottom: 1px solid var(--tg-df-border);      box-sizing: border-box;      color: var(--tg-df-blue);      display: flex;      font-size: 13px;      font-weight: 700;      justify-content: space-between;      line-height: 1.2;      min-height: 34px;      padding: 5px 2px;      text-decoration: none;    }    .tg-df-container .tg-df-card-listing-link::after {      content: '↗';      font-size: 14px;      font-weight: 600;      margin-left: 8px;    }    .tg-df-container .tg-df-card-listing-link:hover,    .tg-df-container .tg-df-card-listing-link:focus-visible {      background: #f8fafc;      color: var(--tg-df-blue);      outline: 2px solid var(--tg-df-blue);      outline-offset: -2px;      text-decoration: none;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: calc(100% + 32px);      max-width: none;      box-sizing: border-box;      background-color: var(--tg-df-blue);      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;      margin: 0 -16px -16px -16px;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      filter: brightness(0.85);    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 120px;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /* Optional mobile 2x2 filter grid */    .tg-df-mobile-2x2-container {      display: none;      width: 100%;      margin: 0 0 16px 0;      position: relative;      z-index: 30;    }    .tg-df-mobile-2x2-grid {      display: grid;      grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);      width: 100%;      border: 1px solid var(--tg-df-border, #e2e8f0);      background: var(--tg-df-bg, #ffffff);    }    .tg-df-container .tg-df-mobile-grid-cell {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      min-width: 0;      padding: 12px 14px;      font-family: inherit;      font-size: 11px;      font-weight: 600;      line-height: 1.2;      text-transform: uppercase;      letter-spacing: 0.5px;      text-align: left;      color: var(--tg-df-text-muted, #64748b);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-mobile-grid-cell > span {      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }    .tg-df-mobile-grid-cell > svg {      flex: 0 0 auto;      margin-left: 8px;      transition: transform 0.15s ease;    }    .tg-df-mobile-grid-cell > svg.is-open {      transform: rotate(180deg);    }    .tg-df-mobile-grid-cell {      border-bottom: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-grid-cell:nth-child(odd) {      border-right: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-2x2-grid--even .tg-df-mobile-grid-cell:nth-last-child(-n + 2) {      border-bottom: 0;    }    .tg-df-mobile-2x2-grid--odd .tg-df-mobile-grid-cell:last-child {      grid-column: 1 / -1;      border-right: 0;      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-grid-cell.active,    .tg-df-container .tg-df-mobile-grid-cell:hover {      background: var(--tg-df-bg-secondary, #f8fafc);      color: var(--tg-df-text, #0f172a);    }    .tg-df-container .tg-df-mobile-grid-cell.has-active-filter {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;    }    .tg-df-mobile-menu-drawer {      width: 100%;      max-height: 260px;      overflow-y: auto;      overscroll-behavior: contain;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-top: 0;      background: var(--tg-df-bg, #ffffff);      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);    }    .tg-df-container .tg-df-mobile-menu-item {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      width: 100%;      min-height: 42px;      padding: 12px 16px;      font-family: inherit;      font-size: 12px;      font-weight: 500;      line-height: 1.3;      text-align: left;      color: var(--tg-df-text, #0f172a);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-bottom: 1px solid #f1f5f9;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-container .tg-df-mobile-menu-item:last-child {      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-menu-item.selected {      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.08);      font-weight: 600;    }    .tg-df-container .tg-df-mobile-menu-item:hover {      background: var(--tg-df-bg-secondary, #f8fafc);    }    .tg-df-mobile-cell-badge {      display: inline-flex;      align-items: center;      justify-content: center;      padding: 2px 6px;      margin-left: 4px;      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.1);      border-radius: 9999px;      font-size: 10px;      font-weight: 700;    }    @container tg-df (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    @media (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    /* A non-full-bleed desktop embed is constrained to the article column.       Reuse the compact filter grid there instead of squeezing the rails. */    @container tg-df (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    @media (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-mobile-authors { gap: 16px !important; }      .tg-df-mobile-authors .tg-df-author-row-item { width: 56px !important; }      .tg-df-mobile-authors .tg-df-author-img-wrapper { width: 48px !important; height: 48px !important; }      .tg-df-mobile-authors .tg-df-author-brand-logo { width: 18px !important; height: 18px !important; bottom: -2px !important; right: -2px !important; }      .tg-df-mobile-authors .tg-df-author-row-name { font-size: 11px !important; }      .tg-df-mobile-authors .tg-df-author-row-role { font-size: 10px !important; }            .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-controls {        padding: 16px 0 8px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }                  .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;        width: auto;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 8px;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    @media (max-width: 599px) {      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;      width: 100vw;      max-width: 1200px;      position: relative;      left: 50%;      transform: translateX(-50%);    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }        .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: var(--tg-df-blue);      position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }      .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 14px;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }        .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;      scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }    .tg-df-container .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-scroll-left {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: rgba(255, 255, 255, 0.4);      color: var(--tg-df-blue);      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);      border: none;      cursor: pointer;      transition: background-color 0.2s;      margin-top: -4px;      z-index: 10;    }    .tg-df-container .tg-df-carousel-scroll-right {      right: 0;    }    .tg-df-container .tg-df-carousel-scroll-left {      left: 0;    }    .tg-df-container .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-scroll-left:hover {      background-color: rgba(255, 255, 255, 0.6);    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left {       height: 30px;       width: 30px;       background-color: rgba(255, 255, 255, 0.8);       box-shadow: 0 2px 4px rgba(0,0,0,0.1);       margin-top: 0;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left:hover {       background-color: white;    }    .tg-df-container .tg-df-grid-wrapper {       position: relative;    }    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-left {       background-color: white;       box-shadow: 0 4px 12px rgba(0,0,0,0.15);       top: 40%;       width: 44px;       height: 44px;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }            .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn {      display: inline-flex;      align-items: center;    }    .tg-df-container .tg-df-carousel-filter-btn:hover, .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      width: calc(100% + 24px);      border-radius: 0;      padding: 8px 10px;      margin: auto -12px -12px -12px;      background-color: var(--tg-df-blue);    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.40);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; padding-right: 12px; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @media (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }      .tg-df-container .hawk-deal-widget-title-product-title,      .tg-df-container .hawk-deal-widget-title-price,      .tg-df-container .hawk-deal-widget-title-retailer {        font-size: 14px !important;        line-height: 1.35 !important;        font-weight: 700 !important;      }      .tg-df-container .hawk-deal-widget-title-was-price {        font-size: 13px !important;        line-height: 1.35 !important;      }      .tg-df-container .hawk-deal-widget-text-body-main {        font-size: 14px !important;        line-height: 1.35 !important;        margin-bottom: 8px !important;      }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    /* BESPOKE AUTHOR HEADER STYLES - MAX ISOLATION PROTECTION */    .tg-df-author-embed {      width: 100% !important;      font-family: inherit !important;      background: transparent !important;      margin: 0 !important;      padding: 0 !important;      border: none !important;    }    .tg-df-author-section {      display: block !important;      width: 100% !important;      max-width: 100% !important;      opacity: 1 !important;      overflow: visible !important;      background: transparent !important;      border: none !important;      margin: 0 auto !important;      padding: 0 !important;      box-shadow: none !important;    }    .tg-df-author-card {      text-align: center !important;      padding: 1.75rem 1rem 1.25rem 1rem !important;      margin: 0 auto !important;      max-width: 48rem !important;      background: transparent !important;      border: none !important;      border-radius: 0 !important;      box-sizing: border-box !important;      box-shadow: none !important;    }    .tg-df-author-image {      width: 180px !important;      height: 180px !important;      border-radius: 50% !important;      object-fit: cover !important;      margin: 0 auto 0.75rem auto !important;      display: block !important;      border: none !important;      box-shadow: none !important;      max-width: 100% !important;    }    .tg-df-author-media-slot {      width: 100% !important;      height: 180px !important;      min-height: 180px !important;      margin: 0 auto 0.75rem auto !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;    }    .tg-df-author-media-slot .tg-df-author-image {      margin: 0 auto !important;    }    .tg-df-author-profile-image-wrapper {      position: relative !important;      width: 180px !important;      height: 180px !important;      margin: 0 auto 0.75rem auto !important;      flex: 0 0 auto !important;    }    .tg-df-author-profile-brand-logo {      position: absolute !important;      right: 12px !important;      bottom: 12px !important;      width: 42px !important;      height: 42px !important;      padding: 0 !important;      border: 3px solid var(--tg-df-bg, #fff) !important;      border-radius: 50% !important;      background: #000 !important;      object-fit: contain !important;      box-sizing: border-box !important;    }    .tg-df-author-curated-by {      font-size: 0.875rem !important;      color: #6B7280 !important;      font-style: normal !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      line-height: 1.4 !important;    }    .tg-df-author-name {      font-size: 2rem !important;      font-weight: 300 !important;      color: #111827 !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      line-height: 1.1 !important;      letter-spacing: -0.02em !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-role {      font-size: 0.9375rem !important;      font-weight: 500 !important;      color: var(--tg-df-blue, #1F69FF) !important;      margin: 0 0 1.25rem 0 !important;      padding: 0 !important;      line-height: 1.3 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-meta-slot {      width: 100% !important;      min-height: 88px !important;      display: flex !important;      flex-direction: column !important;      align-items: center !important;      justify-content: flex-start !important;    }    .tg-df-author-meta-slot--site {      padding-top: 1rem !important;    }    .tg-df-author-meta-slot--no-social {      min-height: 0 !important;    }    .tg-df-author-meta-slot--no-social .tg-df-author-role {      margin-bottom: 0.5rem !important;    }    .tg-df-author-social-links {      display: flex !important;      flex-wrap: wrap !important;      align-items: center !important;      justify-content: center !important;      gap: 1rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 !important;      max-width: 42rem !important;      width: 100% !important;      list-style: none !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-social-btn {      display: inline-flex !important;      align-items: center !important;      justify-content: center !important;      padding: 0 !important;      border-radius: 50% !important;      background-color: #f2f2f2 !important;      color: #111111 !important;      font-size: 0.8125rem !important;      font-weight: 500 !important;      text-decoration: none !important;      transition: all 0.2s ease !important;      border: 0 !important;      line-height: 1 !important;      box-shadow: none !important;      cursor: pointer !important;      outline: none !important;      margin: 0 !important;      height: 34px !important;      width: 34px !important;      min-width: 34px !important;      box-sizing: border-box !important;    }    .tg-df-author-social-btn:hover {      background-color: #dedede !important;      color: #111111 !important;      transform: translateY(-1px) !important;    }    .tg-df-author-social-btn > svg {      width: 19px !important;      height: 19px !important;      flex-shrink: 0 !important;      display: block !important;      margin: 0 !important;    }    .tg-df-author-social-btn[data-social-key="facebook"] > svg {      transform: scale(1.25) !important;    }    .tg-df-author-social-btn[data-social-key="pinterest"] > svg,    .tg-df-author-social-btn[data-social-key="tiktok"] > svg {      transform: scale(1.2) !important;    }    .tg-df-author-bio {      max-width: 42rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 0.5rem !important;      color: #4b5563 !important;      line-height: 1.6 !important;      font-weight: 300 !important;      font-size: 0.9375rem !important;      text-align: center !important;      background: none !important;      border: none !important;      border-radius: 0 !important;      box-shadow: none !important;      display: block !important;      height: auto !important;      overflow: visible !important;    }    .tg-df-author-bio-shell--stable {      width: 100% !important;      box-sizing: border-box !important;    }    .tg-df-author-bio--clamped {      min-height: 4.8em !important;      height: 4.8em !important;      max-height: 4.8em !important;      display: -webkit-box !important;      -webkit-box-orient: vertical !important;      -webkit-line-clamp: 3 !important;      overflow: hidden !important;    }    .tg-df-author-bio--expanded {      min-height: 4.8em !important;      height: auto !important;      max-height: none !important;      display: block !important;      overflow: visible !important;    }    .tg-df-author-bio--static,    .tg-df-author-bio--static:hover,    .tg-df-author-bio--static:focus,    .tg-df-author-bio--static:focus-visible {      outline: none !important;      box-shadow: none !important;      cursor: default !important;    }    .tg-df-author-bio-toggle-slot {      height: 28px !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;      margin: 0.125rem 0 0 !important;    }    .tg-df-author-bio-toggle {      appearance: none !important;      border: 0 !important;      border-bottom: 1px solid currentColor !important;      border-radius: 0 !important;      padding: 0.125rem 0 !important;      margin: 0 !important;      background: transparent !important;      color: #4b5563 !important;      box-shadow: none !important;      font: inherit !important;      font-size: 0.75rem !important;      font-weight: 600 !important;      line-height: 1.2 !important;      text-decoration: none !important;      text-transform: none !important;      cursor: pointer !important;    }    .tg-df-author-bio a {      color: var(--tg-df-blue, #1F69FF) !important;      text-decoration: underline !important;      font-weight: 400 !important;      background: none !important;      border: none !important;      padding: 0 !important;      margin: 0 !important;      border-radius: 0 !important;      display: inline !important;      box-shadow: none !important;    }    .tg-df-author-bio p,    .tg-df-author-bio div,    .tg-df-author-bio span {      margin: 0 !important;      padding: 0 !important;      color: inherit !important;      font: inherit !important;      line-height: inherit !important;      text-align: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-bio strong,    .tg-df-author-bio b {      font-weight: 600 !important;    }    .tg-df-author-bio em,    .tg-df-author-bio i {      font-style: italic !important;    }    @container tg-df (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @media (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @container tg-df (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @media (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }    @media (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }        .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button {      align-items: center; background-color: var(--tg-df-blue); box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;    }    .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button:hover { filter: brightness(0.85); text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }    .tg-df-active-badges-row {      display: flex;      flex-wrap: wrap;      gap: 8px;      align-items: center;      margin-top: 12px;      margin-bottom: 16px;      width: 100%;    }    .tg-df-active-badge {      display: inline-flex;      align-items: center;      gap: 6px;      padding: 8px 14px;      background-color: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border: 1px solid var(--tg-df-blue, #1f69ff);      border-radius: 0px;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;    }    .tg-df-badge-remove {      display: inline-flex;      align-items: center;      justify-content: center;      width: 16px;      height: 16px;      border-radius: 0px;      border: none;      background: rgba(255, 255, 255, 0.25);      color: #ffffff;      cursor: pointer;      padding: 0;      margin-left: 4px;      transition: background-color 0.15s, color 0.15s;    }    .tg-df-badge-remove:hover {      background: rgba(255, 255, 255, 0.45);      color: #ffffff;    }    .tg-df-badge-clear-all {      display: inline-flex;      align-items: center;      justify-content: center;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;      padding: 8px 14px;      color: var(--tg-df-text-muted, #64748b);      cursor: pointer;      background: #ffffff;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-radius: 0px;      transition: all 0.15s ease;    }    .tg-df-badge-clear-all:hover {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border-color: var(--tg-df-blue, #1f69ff);    }    .tg-df-savings-squad-header {      margin-bottom: 24px;      text-align: center;    }    .tg-df-banner-img-desktop {      display: block;      width: 100%;      height: auto;      margin-bottom: 32px;    }    .tg-df-banner-img-mobile {      display: none;      width: 100%;      height: auto;      margin-bottom: 32px;    }    @container tg-df (max-width: 600px) {      .tg-df-banner-img-desktop {        display: none;      }      .tg-df-banner-img-mobile {        display: block;      }    }    .tg-df-header-title {      font-size: 28px;      font-weight: 700;      color: var(--tg-df-text);      margin: 32px 0 12px 0;      line-height: 1.3;    }    .tg-df-header-subtitle {      font-size: 16px;      color: var(--tg-df-text-muted);      margin: 0 0 32px 0;      line-height: 1.5;    }    @container tg-df (max-width: 599px) {      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    @media (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    /* Article Intro Content Styling */    .tg-df-article-content {      font-size: 1rem;      line-height: 1.7;      color: #334155;    }    .tg-df-article-content p {      margin-bottom: 1.25rem;      line-height: 1.7;      font-size: 1rem;      color: #334155;    }    .tg-df-article-content > p:first-of-type::first-letter {      font-size: 3.25rem;      font-weight: 700;      float: left;      line-height: 0.85;      margin-right: 0.5rem;      margin-top: 0.15rem;      color: #0f172a;      font-family: inherit;    }    .tg-df-article-content a {      color: #0066cc;      text-decoration: underline;      font-weight: 500;    }    .tg-df-article-content a:hover {      color: #004499;    }    .tg-df-article-content strong, .tg-df-article-content b {      font-weight: 700;      color: #0f172a;    }    .tg-df-article-section-banner {      border-bottom: 2px solid #e6007e;      margin: 2.25rem 0 1.25rem 0;      position: relative;      clear: both;    }    .tg-df-article-section-banner span {      background-color: #e6007e;      color: #ffffff;      padding: 6px 16px;      font-weight: 700;      font-size: 0.875rem;      text-transform: uppercase;      letter-spacing: 0.05em;      display: inline-block;    }  </style><div class="tg-df-widget-host" data-vizualizer-embed="true" data-tg-df-full-bleed="false" data-tg-df-mobile-dropdowns="true" data-tg-df-sticky-mobile-filters="false" style="--tg-df-blue: #DC191B;"><div class="tg-df-container article-body" style="background-color: transparent;"><div id="tg-df-spreadsheet-filters" style="display: block; margin-bottom: 16px;"><div class="tg-df-categories-row-container" style="border-bottom: 1px solid var(--tg-df-border); position: relative;"><button aria-label="Scroll left" class="tg-df-scroll-btn left tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6"></path></svg></button><button aria-label="Scroll right" class="tg-df-scroll-btn right tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-categories-row" style="display: flex; overflow-x: auto; scrollbar-width: none;"><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Hardware <span style="color: var(--tg-df-blue); font-size: 10px;">66</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Monitors <span style="color: var(--tg-df-blue); font-size: 10px;">9</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming PCs <span style="color: var(--tg-df-blue); font-size: 10px;">7</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Mice <span style="color: var(--tg-df-blue); font-size: 10px;">6</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Headsets <span style="color: var(--tg-df-blue); font-size: 10px;">6</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Audio <span style="color: var(--tg-df-blue); font-size: 10px;">6</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">SSDs <span style="color: var(--tg-df-blue); font-size: 10px;">4</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Storage <span style="color: var(--tg-df-blue); font-size: 10px;">4</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Laptops <span style="color: var(--tg-df-blue); font-size: 10px;">4</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Controllers <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button></div></div></div><div class="tg-df-mobile-2x2-container"><div class="tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--odd"><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>CATEGORIES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>PRICES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell has-active-filter" aria-expanded="false"><span>DISCOUNTS (25%+)</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button></div></div><div class="tg-df-controls" id="tg-df-controls" style="display: flex; margin-top: 12px; margin-bottom: 16px; justify-content: center;"><div class="tg-df-filters-container" style="position: relative; width: 100%; max-width: 800px; margin: 0px auto;"><button class="tg-df-scroll-btn left" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 18l-6-6 6-6"></path></svg></button><button class="tg-df-scroll-btn right" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-filters"><div class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices"><option value="all">All Prices</option><option value="under50">Under $50</option><option value="50_100">$50 - $100</option><option value="100_200">$100 - $200</option><option value="200_500">$200 - $500</option><option value="over500">Over $500</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount"><option value="all">Any discount</option><option value="5">Min 5%</option><option value="10">Min 10%</option><option value="15">Min 15%</option><option value="20">Min 20%</option><option value="25">Min 25%</option><option value="30">Min 30%</option><option value="40">Min 40%</option><option value="50">Min 50%</option><option value="60">Min 60%</option><option value="70">Min 70%</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-review-sort-wrapper" style="display: none;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h16M7 12h10m-7 5h4"></path></svg><select class="tg-df-filter-select" id="tg-df-review-sort" aria-label="Sort Reviews"><option value="date_desc">Most recent</option><option value="rating_desc">Highest rating</option><option value="scored_first">Scored products first</option></select></div></div></div></div><div class="tg-df-active-badges-row" style="display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-top: 10px; margin-bottom: 16px;"><span class="tg-df-active-badge">Min 25% off<button type="button" class="tg-df-badge-remove" aria-label="Remove Min 25% off"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></span></div><div class="tg-df-grid-wrapper"><div class="tg-df-grid article-body tg-df-grid-auto" id="tg-df-grid"><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-0" data-merchant="Amazon" data-previous-price="34.99" data-price="25.99" data-product-name="G203 | Wired"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $9</span><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G203 | Wired" class="tg-df-card-image" loading="lazy" src="http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G203 | Wired"><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G203 | Wired</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed Price check:Best Buy $39.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>25.99</span></span><span class="tg-df-card-msrp">$34.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Glorious" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-0" data-merchant="Amazon" data-previous-price="59.99" data-price="26.31" data-product-name="GHS Eternal | 40 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $33.68</span><a href="https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="GHS Eternal | 40 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="GHS Eternal | 40 mm drivers"><a href="https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Glorious GHS Eternal | 40 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. Key specs: 40 mm drivers | 20 hz - 20 kHz | 255 g</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>26.31</span></span><span class="tg-df-card-msrp">$59.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-1" data-merchant="Amazon" data-previous-price="49.99" data-price="29.99" data-product-name="G305 Lightspeed | Wireless"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20</span><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G305 Lightspeed | Wireless" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G305 Lightspeed | Wireless"><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G305 Lightspeed | Wireless</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The Logitech G305 Lightspeed is our favorite budget wireless mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills. Key specs: Wireless | 12,000 DPI | Right-handed Price check: Best Buy $49.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>29.99</span></span><span class="tg-df-card-msrp">$49.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-86" data-merchant="Amazon" data-previous-price="49.99" data-price="29.99" data-product-name="G305 Lightspeed"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20</span><a href="https://www.amazon.com/dp/B07CMS5Q6P" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G305 Lightspeed" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G305 Lightspeed"><a href="https://www.amazon.com/dp/B07CMS5Q6P" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G305 Lightspeed</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Already reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason. Key specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>29.99</span></span><span class="tg-df-card-msrp">$49.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.amazon.com/dp/B07CMS5Q6P" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Razer" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-87" data-merchant="Bestbuy" data-previous-price="69.99" data-price="34.98" data-product-name="Basilisk V3"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $35.01</span><a href="https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Basilisk V3" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Basilisk V3"><a href="https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Razer Basilisk V3</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This mouse might be a few years old, but we scored it highly in our review in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to tempt even those who usually hate RGB lighting. Key specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>34.98</span></span><span class="tg-df-card-msrp">$69.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bestbuy</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-3" data-merchant="Amazon" data-previous-price="69.99" data-price="37.99" data-product-name="G502 Hero | Wired"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $32</span><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G502 Hero | Wired" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G502 Hero | Wired"><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G502 Hero | Wired</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. Key specs: Wired | 25,600 DPI | Right-handed Price check:Best Buy $69.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>37.99</span></span><span class="tg-df-card-msrp">$69.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Razer" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-80" data-merchant="Amazon" data-previous-price="59.99" data-price="39.79" data-product-name="BlackShark V2 X"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20.2</span><a href="https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="BlackShark V2 X" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/iyz3iXLiJcKt88PnaWDqFi.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="BlackShark V2 X"><a href="https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Razer BlackShark V2 X</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The Razer BlackShark V2 X is a remarkably good gaming headset, so much so that we'd say it was absolutely worth its full asking price, never mind the $20 discount you'll find here. Razer's 50 mm titanium drivers are nicely punchy and capable of plenty of volume without distortion, it's well-made, comfortable to wear all day, and the mic is pretty good, too. Plus, it's got a green cable, and we all know that pop of colour makes wired gaming headsets better by default. Key specs:50 mm drivers | Wired | Cardioid microphone</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>39.79</span></span><span class="tg-df-card-msrp">$59.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Logitech" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-1" data-merchant="Amazon" data-previous-price="79.99" data-price="39.99" data-product-name="G432 | 50 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $40</span><a href="https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="G432 | 50 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/2tUAoKQRgcyuBATm2MWW8Y.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="G432 | 50 mm drivers"><a href="https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Logitech G432 | 50 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Logitech has been cranking out decent budget gaming headsets for a while, but this one's actually more of a mid-range set with a very healthy discount. The black and blue colorway won't be for everyone, but with 7.1 surround sound, a flip-to-mute mic, and DTS Headphone:X 2.0 support, this is certainly a whole lot of headset for the cash. Key specs: 50 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $49.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>39.99</span></span><span class="tg-df-card-msrp">$79.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Razer" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-2" data-merchant="Amazon" data-previous-price="79.99" data-price="44.99" data-product-name="Kraken V4 X | 40 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $35</span><a href="https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Kraken V4 X | 40 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/oNZmqeexBrnWvrT2VvsYhe.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Kraken V4 X | 40 mm drivers"><a href="https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Razer Kraken V4 X | 40 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">If you're wondering why you might pay a little more than the Razer headsets above for, well, another Razer headset, the answer is comfort. Don't get me wrong, the BlackShark V2 X is a comfy thing to wear, but the plush, cushy memory foam cushions of the Kraken are well worth considering if you're looking for as much all-day usage as possible. It still sounds great, too. Key specs: 40 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $59.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>44.99</span></span><span class="tg-df-card-msrp">$79.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Turtle Beach" data-currency="$" data-deal-id="airedale-DpQ8P8QRZKyquhjyAvtzVT-5" data-merchant="Amazon" data-previous-price="99.99" data-price="54.99" data-product-name="Burst II Air | Wireless"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $45</span><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Burst II Air | Wireless" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/oHpVvSDqMgFC5rnRe2pUnQ.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Burst II Air | Wireless"><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Turtle Beach Burst II Air | Wireless</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">We gave this mouse an 85% in our review, praising its very low weight, huge battery life, and super-responsive feel. It doesn't have quite as many fun extras as competitors and can be a bit of a fingerprint magnet, but it is a super solid choice at this price. Key specs: Wireless | 26,000 DPI | Symmetrical Price check:Best Buy $99.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>54.99</span></span><span class="tg-df-card-msrp">$99.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Dave James" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Dave James</a></strong> • Editor-in-Chief, Hardware<span style="color: var(--tg-df-text-muted);"> • 56 mins ago</span></div></div></div></div><a href="https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="HyperX" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-5" data-merchant="Amazon" data-previous-price="99.99" data-price="57.99" data-product-name="Cloud III | 53 mm drivers"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $42</span><a href="https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Cloud III | 53 mm drivers" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/WcvQLZ9svEqddBva629wu3.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Cloud III | 53 mm drivers"><a href="https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>HyperX Cloud III | 53 mm drivers</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">We found this headset to be very comfy in our review, with a balanced sound that still manages to keep a decent whack of bass. Our major drawback was the MSRP, but at $58 this set of cans is well worth a look. Key specs: 53 mm drivers | 15-25,000 Hz | Closed-back | Wired Price check: Best Buy $57.99</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>57.99</span></span><span class="tg-df-card-msrp">$99.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Nothing" data-currency="$" data-deal-id="airedale-3XCZfpsYgsNo9mNRWv4oSg-15" data-merchant="Amazon" data-previous-price="79" data-price="59" data-product-name="Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $20</span><a href="https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/LjJiAaeT6h5YZ9JGiq7c5Z.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)"><a href="https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Nothing Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">These earbuds might not be ideal just for gaming (their low-latency mode is pretty poor), but for listening to music and more casual gaming, they're great. They have a great sound profile, sit comfortably, and look pretty snazzy, too. Key specs: Bluetooth 5.4 | 42.5-hour battery life (9.5 from earbuds) | 20 Hz – 20 kHz frequency response</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>59</span></span><span class="tg-df-card-msrp">$79</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Andy Edser" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Andy Edser</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="KTC" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-40" data-merchant="Newegg" data-previous-price="99.99" data-price="62.49" data-product-name="H24V27"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $37.5</span><a href="https://www.newegg.com/p/3D4-007C-00016" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="H24V27" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/Zn2NZDLM6QnkGJ9n4JBG8E.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="H24V27"><a href="https://www.newegg.com/p/3D4-007C-00016" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>KTC H24V27</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This KTC pick is a budget pick, and it knows it. The 100 Hz refresh rate is just okay; a VA panel means less good viewing angles and color accuracy, but it's a solid enough gaming monitor, and the cheapest I'd actually recommend right now. Remember to use the code &quot;LDSF246&quot; for the full discount Key specs: 24-inch | 100 Hz | 1 ms | VA</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>62.49</span></span><span class="tg-df-card-msrp">$99.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.newegg.com/p/3D4-007C-00016" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Scuf" data-currency="$" data-deal-id="airedale-A97h9Ug45WeF5xPLdcoJyf-0" data-merchant="Amazon" data-previous-price="109.99" data-price="76.99" data-product-name="Valor Pro"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $33</span><a href="https://www.amazon.com/dp/B0DTB3QCS5" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Valor Pro" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Valor Pro"><a href="https://www.amazon.com/dp/B0DTB3QCS5" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Scuf Valor Pro</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">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. Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>76.99</span></span><span class="tg-df-card-msrp">$109.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jess Kinghorn" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="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" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jess Kinghorn</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 24 days ago</span></div></div></div></div><a href="https://www.amazon.com/dp/B0DTB3QCS5" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Acer" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-41" data-merchant="Newegg" data-previous-price="129.99" data-price="79.99" data-product-name="AOpen 24KG1Y X3bip"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $50</span><a href="https://www.newegg.com/p/N82E16824011533" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="AOpen 24KG1Y X3bip" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/fqL7czYaKKB7Rk7rmTQe5C.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="AOpen 24KG1Y X3bip"><a href="https://www.newegg.com/p/N82E16824011533" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Acer AOpen 24KG1Y X3bip</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a $50 discount, this is the highest refresh rate 1080p monitor you will find at its price point. It's also IPS, which offers better viewing angles and colours than VA and comes with a solid response time too. Key specs: 23.8-inch | 200 Hz | 0.5 ms | IPS</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>79.99</span></span><span class="tg-df-card-msrp">$129.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.newegg.com/p/N82E16824011533" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Asus" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-82" data-merchant="Amazon" data-previous-price="129.99" data-price="79.99" data-product-name="ROG Pelta"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $50</span><a href="https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="ROG Pelta" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/BvSb9rkRtpTSDDSBFEv84V.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="ROG Pelta"><a href="https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Asus ROG Pelta</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a strong battery life, super comfortable fit, and nice, airy materials, the Asus ROG Pelta is a bit of a belter. At its usual price, it's still a very good offering, but $45 off makes it an instant recommendation. Key specs: 2.4 GHz, Bluetooth, and USB-C connectivity | 90-hour battery life</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>79.99</span></span><span class="tg-df-card-msrp">$129.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-vCxWr8kxLPhtdqNjq9cgjZ-43" data-merchant="Bestbuy" data-previous-price="149.99" data-price="97.49" data-product-name="MAG 244F"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $52.5</span><a href="https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="MAG 244F" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/mYqdsr7LKubQtfmTBy5XL7.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="MAG 244F"><a href="https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI MAG 244F</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">With a hurtling-fast refresh rate and snappy response rate, this IPS panel from MSI is a solid competitive pick for just under $100. Key specs: 24-inch | 200 Hz | 0.5 ms | IPS</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>97.49</span></span><span class="tg-df-card-msrp">$149.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bestbuy</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/labor-day-pc-gaming-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 21 days ago</span></div></div></div></div><a href="https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-UBBZiFU9BXsLfvbZ8d4awf-1" data-merchant="Walmart" data-previous-price="149.99" data-price="99" data-product-name="MAG 255XFV"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $50.99</span><a href="https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="MAG 255XFV" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/SdhjSd7YdmiehGuzvXtiwU.jpg"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="MAG 255XFV"><a href="https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI MAG 255XFV</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">You might not like the VA panel and its low brightness, but you'll surely like the speed and price tag. 250 Hz, 0.5 ms pixel time, and adaptive sync will all help to ensure you get super-silky gaming. Key specs: 25-inch | 250 Hz | 0.5 ms | VA Price check: Best Buy OOS | Micro Centre OOS</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>99</span></span><span class="tg-df-card-msrp">$149.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="James Bentley" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/amazon-prime-day-gaming-monitor-deals" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">James Bentley</a></strong> • Hardware writer<span style="color: var(--tg-df-text-muted);"> • 2 hrs ago</span></div></div></div></div><a href="https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-load-more-control" style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1; overflow-anchor: none;"><button type="button" class="tg-df-tag-outline" aria-busy="false" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer;">Load More</button></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"Product","name":"G203 | Wired","image":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","description":"Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed Price check:Best Buy $39.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":25.99,"url":"https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":2,"item":{"@type":"Product","name":"GHS Eternal | 40 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png","description":"With a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. Key specs: 40 mm drivers | 20 hz - 20 kHz | 255 g","brand":{"@type":"Brand","name":"Glorious"},"offers":{"@type":"Offer","priceCurrency":"USD","price":26.31,"url":"https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":3,"item":{"@type":"Product","name":"G305 Lightspeed | Wireless","image":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","description":"The Logitech G305 Lightspeed is our favorite budget wireless mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills. Key specs: Wireless | 12,000 DPI | Right-handed Price check: Best Buy $49.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":29.99,"url":"https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":4,"item":{"@type":"Product","name":"G305 Lightspeed","image":"https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png","description":"Already reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason. Key specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":29.99,"url":"https://www.amazon.com/dp/B07CMS5Q6P","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":5,"item":{"@type":"Product","name":"Basilisk V3","image":"https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg","description":"This mouse might be a few years old, but we scored it highly in our review in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to tempt even those who usually hate RGB lighting. Key specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g","brand":{"@type":"Brand","name":"Razer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":34.98,"url":"https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS","seller":{"@type":"Organization","name":"Bestbuy"}}}},{"@type":"ListItem","position":6,"item":{"@type":"Product","name":"G502 Hero | Wired","image":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","description":"This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. Key specs: Wired | 25,600 DPI | Right-handed Price check:Best Buy $69.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":37.99,"url":"https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":7,"item":{"@type":"Product","name":"BlackShark V2 X","image":"https://cdn.mos.cms.futurecdn.net/iyz3iXLiJcKt88PnaWDqFi.jpg","description":"The Razer BlackShark V2 X is a remarkably good gaming headset, so much so that we'd say it was absolutely worth its full asking price, never mind the $20 discount you'll find here. Razer's 50 mm titanium drivers are nicely punchy and capable of plenty of volume without distortion, it's well-made, comfortable to wear all day, and the mic is pretty good, too. Plus, it's got a green cable, and we all know that pop of colour makes wired gaming headsets better by default. Key specs:50 mm drivers | Wired | Cardioid microphone","brand":{"@type":"Brand","name":"Razer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":39.79,"url":"https://www.amazon.com/Razer-BlackShark-V2-Gaming-Headset/dp/B086PKMZ21/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":8,"item":{"@type":"Product","name":"G432 | 50 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/2tUAoKQRgcyuBATm2MWW8Y.jpg","description":"Logitech has been cranking out decent budget gaming headsets for a while, but this one's actually more of a mid-range set with a very healthy discount. The black and blue colorway won't be for everyone, but with 7.1 surround sound, a flip-to-mute mic, and DTS Headphone:X 2.0 support, this is certainly a whole lot of headset for the cash. Key specs: 50 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $49.99","brand":{"@type":"Brand","name":"Logitech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":39.99,"url":"https://www.amazon.com/Logitech-Surround-Gaming-Headset-Leatherette/dp/B07MRMHML9/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":9,"item":{"@type":"Product","name":"Kraken V4 X | 40 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/oNZmqeexBrnWvrT2VvsYhe.jpg","description":"If you're wondering why you might pay a little more than the Razer headsets above for, well, another Razer headset, the answer is comfort. Don't get me wrong, the BlackShark V2 X is a comfy thing to wear, but the plush, cushy memory foam cushions of the Kraken are well worth considering if you're looking for as much all-day usage as possible. It still sounds great, too. Key specs: 40 mm drivers | 20-20,000 Hz | Closed-back | Wired Price check: Best Buy $59.99","brand":{"@type":"Brand","name":"Razer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":44.99,"url":"https://www.amazon.com/Razer-Kraken-Wired-Gaming-Headset-Smartphone/dp/B0D9ZQTZ8N/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":10,"item":{"@type":"Product","name":"Burst II Air | Wireless","image":"https://cdn.mos.cms.futurecdn.net/oHpVvSDqMgFC5rnRe2pUnQ.jpg","description":"We gave this mouse an 85% in our review, praising its very low weight, huge battery life, and super-responsive feel. It doesn't have quite as many fun extras as competitors and can be a bit of a fingerprint magnet, but it is a super solid choice at this price. Key specs: Wireless | 26,000 DPI | Symmetrical Price check:Best Buy $99.99","brand":{"@type":"Brand","name":"Turtle Beach"},"offers":{"@type":"Offer","priceCurrency":"USD","price":54.99,"url":"https://www.amazon.com/Turtle-Beach-Burst-Air-Lightweight/dp/B0D1CS6C2L/?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":11,"item":{"@type":"Product","name":"Cloud III | 53 mm drivers","image":"https://cdn.mos.cms.futurecdn.net/WcvQLZ9svEqddBva629wu3.jpg","description":"We found this headset to be very comfy in our review, with a balanced sound that still manages to keep a decent whack of bass. Our major drawback was the MSRP, but at $58 this set of cans is well worth a look. Key specs: 53 mm drivers | 15-25,000 Hz | Closed-back | Wired Price check: Best Buy $57.99","brand":{"@type":"Brand","name":"HyperX"},"offers":{"@type":"Offer","priceCurrency":"USD","price":57.99,"url":"https://www.amazon.com/HyperX-Cloud-III-Ultra-Clear-USB/dp/B0C3BV19Q3/","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":12,"item":{"@type":"Product","name":"Ear (a) | Bluetooth | 42.5-hour battery life (9.5 from earbuds)","image":"https://cdn.mos.cms.futurecdn.net/LjJiAaeT6h5YZ9JGiq7c5Z.png","description":"These earbuds might not be ideal just for gaming (their low-latency mode is pretty poor), but for listening to music and more casual gaming, they're great. They have a great sound profile, sit comfortably, and look pretty snazzy, too. Key specs: Bluetooth 5.4 | 42.5-hour battery life (9.5 from earbuds) | 20 Hz – 20 kHz frequency response","brand":{"@type":"Brand","name":"Nothing"},"offers":{"@type":"Offer","priceCurrency":"USD","price":59,"url":"https://www.amazon.com/Nothing-Ear-Integration-Cancelling-Equaliser/dp/B0CXPR5412","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":13,"item":{"@type":"Product","name":"H24V27","image":"https://cdn.mos.cms.futurecdn.net/Zn2NZDLM6QnkGJ9n4JBG8E.png","description":"This KTC pick is a budget pick, and it knows it. The 100 Hz refresh rate is just okay; a VA panel means less good viewing angles and color accuracy, but it's a solid enough gaming monitor, and the cheapest I'd actually recommend right now. Remember to use the code "LDSF246" for the full discount Key specs: 24-inch | 100 Hz | 1 ms | VA","brand":{"@type":"Brand","name":"KTC"},"offers":{"@type":"Offer","priceCurrency":"USD","price":62.49,"url":"https://www.newegg.com/p/3D4-007C-00016","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":14,"item":{"@type":"Product","name":"Valor Pro","image":"https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W.png","description":"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. Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks","brand":{"@type":"Brand","name":"Scuf"},"offers":{"@type":"Offer","priceCurrency":"USD","price":76.99,"url":"https://www.amazon.com/dp/B0DTB3QCS5","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":15,"item":{"@type":"Product","name":"AOpen 24KG1Y X3bip","image":"https://cdn.mos.cms.futurecdn.net/fqL7czYaKKB7Rk7rmTQe5C.png","description":"With a $50 discount, this is the highest refresh rate 1080p monitor you will find at its price point. It's also IPS, which offers better viewing angles and colours than VA and comes with a solid response time too. Key specs: 23.8-inch | 200 Hz | 0.5 ms | IPS","brand":{"@type":"Brand","name":"Acer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":79.99,"url":"https://www.newegg.com/p/N82E16824011533","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":16,"item":{"@type":"Product","name":"ROG Pelta","image":"https://cdn.mos.cms.futurecdn.net/BvSb9rkRtpTSDDSBFEv84V.jpg","description":"With a strong battery life, super comfortable fit, and nice, airy materials, the Asus ROG Pelta is a bit of a belter. At its usual price, it's still a very good offering, but $45 off makes it an instant recommendation. Key specs: 2.4 GHz, Bluetooth, and USB-C connectivity | 90-hour battery life","brand":{"@type":"Brand","name":"Asus"},"offers":{"@type":"Offer","priceCurrency":"USD","price":79.99,"url":"https://www.amazon.com/ASUS-ROG-Lightweight-Titanium-Plated-Super-Wideband/dp/B0DNTLYK6Z/?th=1","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":17,"item":{"@type":"Product","name":"MAG 244F","image":"https://cdn.mos.cms.futurecdn.net/mYqdsr7LKubQtfmTBy5XL7.png","description":"With a hurtling-fast refresh rate and snappy response rate, this IPS panel from MSI is a solid competitive pick for just under $100. Key specs: 24-inch | 200 Hz | 0.5 ms | IPS","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":97.49,"url":"https://www.bestbuy.com/product/msi-mag-244f-24-fhd-rapid-ips-200hz-0-5ms-gaming-monitor-with-freesync-premium-and-hdr-ready-hdmi-displayport-metallic-black/J3P7TX95RK/sku/11064910","seller":{"@type":"Organization","name":"Bestbuy"}}}},{"@type":"ListItem","position":18,"item":{"@type":"Product","name":"MAG 255XFV","image":"https://cdn.mos.cms.futurecdn.net/SdhjSd7YdmiehGuzvXtiwU.jpg","description":"You might not like the VA panel and its low brightness, but you'll surely like the speed and price tag. 250 Hz, 0.5 ms pixel time, and adaptive sync will all help to ensure you get super-silky gaming. Key specs: 25-inch | 250 Hz | 0.5 ms | VA Price check: Best Buy OOS | Micro Centre OOS","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":99,"url":"https://www.walmart.com/ip/MSI-MAG-255XFV-25-Class-Full-HD-Gaming-LED-Monitor-16-9-Metallic-Black-24-5-Viewable-Rapid-Vertical-Alignment-VA-LED-Backlight-1920-x-1080-16-7-Milli/6933451174","seller":{"@type":"Organization","name":"Walmart"}}}}]}</script></div></div><div class="tg-df-modal-backdrop "><div class="tg-df-modal"><div class="tg-df-modal-header"><h3 class="tg-df-modal-title">Available Coupons & Deals</h3><button class="tg-df-modal-close"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div><div class="tg-df-modal-body"><div class="tg-df-message">No active vouchers found for .</div></div></div></div></div></div>  </div>  <script type="application/json" data-fcaw-config>{"authorBioLength":"short","authorFullBleed":false,"authorHandle":"all-authors","authorName":"All authors","backgroundColor":"transparent","customBio":"","discountAmount":"25","editorMode":false,"editorialMaxAgeMonths":"0","includeBuyingGuideProducts":false,"includeCollections":false,"includeDeals":true,"includeReviewProducts":false,"mobileDropdowns":true,"stickyMobileFilters":false,"offerType":"","preloadReviewInventory":false,"lightweightReviewDelivery":false,"hideHawkPrices":false,"prioritiseCommercialProducts":true,"priceRange":"all","productSelection":"mix","query":"","region":"auto","resultCount":"6","retailer":"","selectedBrands":[],"showAuthorBio":false,"showAuthorCounters":true,"showAuthorIdentity":false,"showAuthorRail":false,"showBrandRail":false,"showCategoryRail":true,"showCollectionsDropdown":false,"showPriceDiscountFilters":true,"showReviewSort":false,"showSocialButtons":false,"showCountdown":false,"showHeaderDetails":true,"showFreeformTagRail":false,"sort":"price_asc","viewMode":"author","website":"pcgamer","widgetSubtitle":"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.","widgetTitle":"Top Deals Handpicked by Our Editors","brands":[],"shortenedHeadlines":{},"compactEmbed":true}</script>  <script type="application/json" data-fcaw-preload>{"authors":[{"bioLong":"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.","bioShort":"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.","name":"James","fullName":"James Bentley","handle":"james-bentley","role":"Hardware writer","image":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","brandKey":"pcgamer"},{"bioLong":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","bioShort":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","name":"Dave","fullName":"Dave James","handle":"dave-james","role":"Editor-in-Chief, Hardware","image":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/not_the_gk","label":"X (Twitter)"},{"key":"email","href":"mailto:dave.james@futurenet.com","label":"Email"}]},{"bioLong":"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'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's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","bioShort":"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'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's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","name":"Jacob","fullName":"Jacob Fox","handle":"jacob-fox","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","brandKey":"pcgamer"},{"bioLong":"Andy built his first gaming PC at the tender age of 12, when IDE cables were a thing and high resolution wasn't. 26 years later (yes he's getting old), he now spends his days writing about and reviewing graphics cards, CPUs, keyboards, mice, gaming headsets and much, much more. You name it, if it's PC gaming hardware he'll write words about it, with opinions and everything.","bioShort":"Andy built his first gaming PC at the tender age of 12, when IDE cables were a thing and high resolution wasn't. 26 years later (yes he's getting old), he now spends his days writing about and reviewing graphics cards, CPUs, keyboards, mice, gaming headsets and much, much more. You name it, if it's PC gaming hardware he'll write words about it, with opinions and everything.","name":"Andy","fullName":"Andy Edser","handle":"andy-edser","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","brandKey":"pcgamer"},{"bioLong":"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'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.\u0026nbsp;","bioShort":"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'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.\u0026nbsp;","name":"Jess","fullName":"Jess Kinghorn","handle":"jess-kinghorn","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/KoeniginKatze","label":"X (Twitter)"},{"key":"linkedin","href":"https://www.linkedin.com/in/jess-kinghorn","label":"LinkedIn"}]}],"brands":[{"formatted_value":"Acer","count":13},{"formatted_value":"Samsung","count":12},{"formatted_value":"MSI","count":11},{"formatted_value":"Logitech","count":7},{"formatted_value":"HyperX","count":5},{"formatted_value":"LG","count":5},{"formatted_value":"Razer","count":4},{"formatted_value":"Yawyore","count":3},{"formatted_value":"Koorui","count":3},{"formatted_value":"ASRock","count":3},{"formatted_value":"Kingston","count":2},{"formatted_value":"Crucial","count":2},{"formatted_value":"Team Group","count":2},{"formatted_value":"Lenovo","count":2},{"formatted_value":"Skytech","count":2},{"formatted_value":"Gigabyte","count":2},{"formatted_value":"Asus","count":2},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Glorious","count":1},{"formatted_value":"Nothing","count":1},{"formatted_value":"HP","count":1},{"formatted_value":"KTC","count":1},{"formatted_value":"Innocn","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1}],"activeDealTag":null,"activeFreeformTag":null,"activeFreeformTags":[],"couponMap":{"Amazon":"has","Bestbuy":"none","Newegg":"none","Walmart":"none"},"totalAuthorCount":5,"totalDealCount":56,"tagCounts":{"Gaming Mice":6,"Hardware":66,"Gaming Headsets":6,"Gaming Audio":6,"SSDs":4,"Storage":4,"Gaming Laptops":4,"Gaming PCs":7,"Gaming Monitors":9,"Controllers":1},"tags":["Hardware","Gaming Monitors","Gaming PCs","Gaming Mice","Gaming Headsets","Gaming Audio","SSDs","Storage","Gaming Laptops","Controllers"],"freeformTagCounts":{"hardware":66,"mouse":6,"gaming-mouse":6,"prime-day":6,"amazon-prime-day-2026":12,"amazon-prime-day":30,"prime-day-deals":24,"deals":31,"deal":32,"big-deal-days":30,"gaming-headset":6,"amazon-prime":18,"ssd":4,"pc-deals":18,"gaming-laptops":4,"intel":6,"nvidia":4,"radeon":2,"gaming-pc":3,"gaming-monitor":9,"ryzen":2,"monitors":8,"solid-state-drive":4,"solid-state":4,"hdd":4,"hard-drive":4,"storage":4,"gaming-laptop":4,"budget":4,"cheap":4,"labor-day":38,"gaming-pc-deals":1,"collections":1,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"monitor":1,"monitor-deals":1,"4k-monitor":1,"gaming-monitor-deal":1,"4k":1,"4k-gaming":1,"acer":1},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"amazon-prime-day","label":"Amazon Prime Day","requestValue":"Amazon Prime Day"},{"handle":"big-deal-days","label":"Big Deal Days","requestValue":"Big Deal Days"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"amazon-prime-day-2026","label":"Amazon Prime Day 2026","requestValue":"Amazon Prime Day 2026"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"mouse","label":"mouse","requestValue":"mouse"},{"handle":"gaming-mouse","label":"gaming mouse","requestValue":"gaming mouse"},{"handle":"prime-day","label":"Prime Day","requestValue":"Prime Day"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"gaming-laptops","label":"gaming laptops","requestValue":"gaming laptops"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"radeon","label":"Radeon","requestValue":"Radeon"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"acer","label":"Acer","requestValue":"Acer"}],"reviewInventoryBaked":false,"regionalDealManifests":{"US":[{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-0","url":"https://www.amazon.com/Logitech-LIGHTSYNC-Wired-Gaming-Mouse/dp/B07YN82X3B/","image":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","fallbackImage":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","title":"G203 | Wired","brand":"Logitech","productName":"G203 | Wired","merchant":"Amazon","rawPrice":25.99,"rawMsrp":34.99,"price":"25.99","msrp":"34.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $9","savingType":"amount","isPrime":false,"starRating":null,"description":"Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed Price check:Best Buy $39.99","text":"\u003cp\u003ePerfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 8,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check:\u003c/strong\u003e\u003ca href=\"https://www.bestbuy.com/site/logitech-g203-lightsync-wired-optical-gaming-mouse-with-8000-dpi-sensor-white/6409362.p?skuId=6409362\" target=\"_blank\"\u003eBest Buy $39.99\u003c/a\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-0","url":"https://www.amazon.com/GLORIOUS-GHS-Eternal-Adjustable-Detachable/dp/B0GHZPFZ7R?th=1","image":"https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/AJ9J3xmw76BBiXYbhAtpX9.png","title":"GHS Eternal | 40 mm drivers","brand":"Glorious","productName":"GHS Eternal | 40 mm drivers","merchant":"Amazon","rawPrice":26.31,"rawMsrp":59.99,"price":"26.31","msrp":"59.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $33.68","savingType":"amount","isPrime":false,"starRating":null,"description":"With a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. Key specs: 40 mm drivers | 20 hz - 20 kHz | 255 g","text":"\u003cp\u003eWith a solid build quality, good compatibility and sweet design, the Glorious GHS is a thoroughly middle-of-the-pack budget gaming headset, but is a bit of a steal with a third off. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20 hz - 20 kHz | 255 g\u003c/strong\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-1","url":"https://www.amazon.com/Logitech-LIGHTSPEED-Wireless-Gaming-Mouse/dp/B07CMS5Q6P/?th=1","image":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","title":"G305 Lightspeed | Wireless","brand":"Logitech","productName":"G305 Lightspeed | Wireless","merchant":"Amazon","rawPrice":29.99,"rawMsrp":49.99,"price":"29.99","msrp":"49.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $20","savingType":"amount","isPrime":false,"starRating":null,"description":"The Logitech G305 Lightspeed is our favorite budget wireless mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills. Key specs: Wireless | 12,000 DPI | Right-handed Price check: Best Buy $49.99","text":"\u003cp\u003eThe Logitech G305 Lightspeed is our\u003ca href=\"https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse\" target=\"_blank\"\u003e favorite budget wireless mouse\u003c/a\u003e—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wireless | 12,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check: \u003c/strong\u003e\u003ca href=\"https://www.bestbuy.com/product/logitech-g305-lightspeed-wireless-optical-6-programmable-button-gaming-mouse-with-12000-dpi-hero-sensor-wireless-white/J7H7ZY2ZYR\" target=\"_blank\"\u003eBest Buy $49.99\u003c/a\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-vCxWr8kxLPhtdqNjq9cgjZ-86","url":"https://www.amazon.com/dp/B07CMS5Q6P","image":"https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/dpuXF5Uxu6UiYvVTFQgMMT.png","title":"G305 Lightspeed","brand":"Logitech","productName":"G305 Lightspeed","merchant":"Amazon","rawPrice":29.99,"rawMsrp":49.99,"price":"29.99","msrp":"49.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $20","savingType":"amount","isPrime":false,"starRating":null,"description":"Already reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason. Key specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life","text":"\u003cp\u003eAlready reasonably priced, who could say no to this charming rodent at a deep discount? Offering precision and durability with buttons rated for 10 million clicks—plus an array of fetching colours—this remains a great budget pick for good reason.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wireless gaming mouse | Hero sensor | 12K CPI | 5 programmable buttons | 99 g weight | 200 hour battery life\u003c/strong\u003e\u003c/p\u003e","authorName":"James Bentley","authorRole":"Hardware writer","authorImage":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","documentUrl":"labor-day-pc-gaming-deals","modifiedDate":"2026-09-07T11:22:09Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-vCxWr8kxLPhtdqNjq9cgjZ-87","url":"https://www.bestbuy.com/product/razer-basilisk-v3-optical-gaming-mouse-with-chroma-rbg-lighting-wired-black/J3GTVWWXLS","image":"https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/N9iH8xZ8SztLJ9SyQsufAP.jpg","title":"Basilisk V3","brand":"Razer","productName":"Basilisk V3","merchant":"Bestbuy","rawPrice":34.98,"rawMsrp":69.99,"price":"34.98","msrp":"69.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $35.01","savingType":"amount","isPrime":false,"starRating":null,"description":"This mouse might be a few years old, but we scored it highly in our review in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to tempt even those who usually hate RGB lighting. Key specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g","text":"\u003cp\u003eThis mouse might be a few years old, but we scored it highly in \u003ca href=\"https://www.pcgamer.com/razer-basilisk-v3-gaming-mouse-review/\" target=\"_blank\"\u003eour review\u003c/a\u003e in part thanks to that lovely ergonomic design. It also has some lush underglow RGB that's sure to \u003ca href=\"https://www.pcgamer.com/hardware/im-ashamed-to-say-that-this-razer-mouse-has-made-me-actually-take-a-shine-to-rgb-and-now-you-can-be-persuaded-too-for-almost-50-percent-off/\" target=\"_blank\"\u003etempt even those who usually hate RGB lighting\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired gaming mouse | 26K DPI | 11 buttons | 100 g\u003c/strong\u003e\u003c/p\u003e","authorName":"James Bentley","authorRole":"Hardware writer","authorImage":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","documentUrl":"labor-day-pc-gaming-deals","modifiedDate":"2026-09-07T11:22:09Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-3","url":"https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/","image":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","title":"G502 Hero | Wired","brand":"Logitech","productName":"G502 Hero | Wired","merchant":"Amazon","rawPrice":37.99,"rawMsrp":69.99,"price":"37.99","msrp":"69.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $32","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. Key specs: Wired | 25,600 DPI | Right-handed Price check:Best Buy $69.99","text":"\u003cp\u003eThis is a substantial discount on a tried and tested Logitech gaming mouse, with a large amount of customisation. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customizable buttons, and comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 25,600 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check:\u003c/strong\u003e\u003ca href=\"https://www.bestbuy.com/site/logitech-g502-hero-wired-optical-gaming-mouse-with-rgb-lighting-black/6265133.p?skuId=6265133\" target=\"_blank\"\u003eBest Buy $69.99\u003c/a\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true}],"GB":[{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-10","url":"https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/","image":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","fallbackImage":"http://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC.jpg","title":"G203 | Wired","brand":"Logitech","productName":"G203 | Wired","merchant":"Amazon","rawPrice":19.99,"rawMsrp":30.99,"price":"19.99","msrp":"30.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £11","savingType":"amount","isPrime":false,"starRating":null,"description":"Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral. Key specs: Wired | 8,000 DPI | Right-handed","text":"\u003cp\u003ePerfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 8,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-11","url":"https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ","image":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9.jpg","title":"G305 Lightspeed | Wireless","brand":"Logitech","productName":"G305 Lightspeed | Wireless","merchant":"Amazon","rawPrice":19.99,"rawMsrp":27.99,"price":"19.99","msrp":"27.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £8","savingType":"amount","isPrime":false,"starRating":null,"description":"The Logitech G305 Lightspeed is our favorite wireless budget mouse—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills in time for the holidays. Key specs: Wireless | 12,000 DPI | Right-handed","text":"\u003cp\u003eThe Logitech G305 Lightspeed is our\u003ca href=\"https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse\" target=\"_blank\"\u003e favorite wireless budget mouse\u003c/a\u003e—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills in time for the holidays.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wireless | 12,000 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-19","url":"https://www.amazon.co.uk/JBL-Quantum-Gaming-Wired-Over-ear-Black/dp/B083X24CFF/","image":"https://cdn.mos.cms.futurecdn.net/QpbyfGXi5wHEk3EUKrQ3cb.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/QpbyfGXi5wHEk3EUKrQ3cb.jpg","title":"Quantum 100 | 40 mm drivers","brand":"JBL","productName":"Quantum 100 | 40 mm drivers","merchant":"Amazon","rawPrice":19.99,"rawMsrp":29.99,"price":"19.99","msrp":"29.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £10","savingType":"amount","isPrime":false,"starRating":null,"description":"JBL has a reputation for good audio quality, and this headset is hard to argue with at this price. Featuring JBL's \u0026quot;Quantum Sound Signature\u0026quot;, memory foam ear cushions and a good quality detachable boom microphone, it's difficult to think of a better value headset for the money. Key specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired","text":"\u003cp\u003eJBL has a reputation for good audio quality, and this headset is hard to argue with at this price. Featuring JBL's \u0026quot;Quantum Sound Signature\u0026quot;, memory foam ear cushions and a good quality detachable boom microphone, it's difficult to think of a better value headset for the money.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired\u003c/strong\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-DpQ8P8QRZKyquhjyAvtzVT-12","url":"https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/","image":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX.jpg","title":"G502 Hero | Wired","brand":"Logitech","productName":"G502 Hero | Wired","merchant":"Amazon","rawPrice":22.01,"rawMsrp":37.79,"price":"22.01","msrp":"37.79","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £15.78","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a tried and tested Logitech gaming mouse, with an astonishing amount of customisation potential. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customisable buttons with onboard memory, and even comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. The two main buttons use mechanical switch tensioning to make every click feel satisfying, and the programmable RGB lighting finishes off this comprehensive package of gaming mouse goodness. Key specs: Wired | 25,600 DPI | Right-handed","text":"\u003cp\u003eThis is a tried and tested Logitech gaming mouse, with an astonishing amount of customisation potential. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customisable buttons with onboard memory, and even comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. The two main buttons use mechanical switch tensioning to make every click feel satisfying, and the programmable RGB lighting finishes off this comprehensive package of gaming mouse goodness.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Wired | 25,600 DPI | Right-handed\u003c/strong\u003e\u003c/p\u003e","authorName":"Dave James","authorRole":"Editor-in-Chief, Hardware","authorImage":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","documentUrl":"hardware/gaming-mice/best-october-prime-day-gaming-mouse-deals","modifiedDate":"2026-09-28T13:33:10Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-23","url":"https://www.amazon.co.uk/Logitech-LIGHTSPEED-Wireless-Bluetooth-Nintendo/dp/B0FL7NNGRG?th=1","image":"https://cdn.mos.cms.futurecdn.net/jMLjXCziHPvivaafPHDC6Z.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/jMLjXCziHPvivaafPHDC6Z.jpg","title":"G321 Lightspeed | 40 mm drivers","brand":"Logitech","productName":"G321 Lightspeed | 40 mm drivers","merchant":"Amazon","rawPrice":32.99,"rawMsrp":59.99,"price":"32.99","msrp":"59.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £27","savingType":"amount","isPrime":false,"starRating":null,"description":"This very lightweight, very comfortable headset has a balanced sound profile to match, as our James found in his review. It won't blow you away with bass or features, but at this price it's still worth considering. Key specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wireless Price check: Currys £42.99","text":"\u003cp\u003eThis very lightweight, very comfortable headset has a balanced sound profile to match, as our James found in \u003ca href=\"https://www.pcgamer.com/hardware/gaming-headsets/logitech-g321-lightspeed-review/\" target=\"_blank\"\u003ehis review\u003c/a\u003e. It won't blow you away with bass or features, but at this price it's still worth considering.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wireless \u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check: \u003c/strong\u003e\u003ca href=\"https://www.currys.co.uk/products/logitech-g321-lightspeed-wireless-bluetooth-gaming-headset-black-10289632.html\" target=\"_blank\"\u003eCurrys £42.99\u003c/a\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-3XCZfpsYgsNo9mNRWv4oSg-20","url":"https://www.amazon.co.uk/Logitech-Microphone-Comfortable-Lightweight-PlayStation/dp/B07W6J6TG5/","image":"https://cdn.mos.cms.futurecdn.net/4zYtRMX5cd9pAbB5K6yiNa.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/4zYtRMX5cd9pAbB5K6yiNa.jpg","title":"G335 | 40 mm drivers","brand":"Logitech","productName":"G335 | 40 mm drivers","merchant":"Amazon","rawPrice":34.99,"rawMsrp":64.99,"price":"34.99","msrp":"64.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £30","savingType":"amount","isPrime":false,"starRating":null,"description":"This Logitech headset is a lightweight marvel with memory foam earphone pads and a refined yet colourful aesthetic. The 40mm neodymium drivers are well-rounded and it comes with a handy in-line volume control on its extra-long wire. The microphone is nothing to write home about, but for this price these make an excellent entry-level set of cans. Key specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired Price check: Currys £34.99","text":"\u003cp\u003eThis Logitech headset is a lightweight marvel with memory foam earphone pads and a refined yet colourful aesthetic. The 40mm neodymium drivers are well-rounded and it comes with a handy in-line volume control on its extra-long wire. The microphone is nothing to write home about, but for this price these make an excellent entry-level set of cans.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 40 mm drivers | 20-20,000Hz | Closed-back | Wired\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003ePrice check: \u003c/strong\u003e\u003ca href=\"https://www.currys.co.uk/products/logitech-g335-gaming-headset-black-10227173.html\" target=\"_blank\"\u003eCurrys £34.99\u003c/a\u003e\u003c/p\u003e","authorName":"Andy Edser","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png","documentUrl":"hardware/gaming-headsets/the-best-amazon-prime-day-2026-gaming-headset-deals-im-hunting-down-the-best-sounding-cans-for-the-lowest-prices","modifiedDate":"2026-09-28T12:20:35Z","isFeatured":false,"hasCommerceOffer":true}],"AU":[{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-5","url":"https://www.amazon.com.au/JBL-QuantumSOUND-Signature-Comfortable-Breathable/dp/B0D6NLHV8N","image":"https://cdn.mos.cms.futurecdn.net/cvnYTUETxZSPZrZFK8PUMG.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/cvnYTUETxZSPZrZFK8PUMG.jpg","title":"Quantum 100M2","brand":"JBL","productName":"Quantum 100M2","merchant":"Amazon","rawPrice":29,"rawMsrp":59.95,"price":"29","msrp":"59.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$30.95","savingType":"amount","isPrime":false,"starRating":null,"description":"If you're hell bent on keeping costs low, JBL’s Quantum 100M2 is cheap as chips—especially if you happen to be buying AU$29 worth of chips. These aren't fancy but they do work, with a boom mic, breathable ear cushions, and a stripped-back design.","text":"\u003cp\u003eIf you're hell bent on keeping costs low, JBL’s Quantum 100M2 is cheap as chips—especially if you happen to be buying AU$29 worth of chips. These aren't fancy but they do work, with a boom mic, breathable ear cushions, and a stripped-back design.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-1","url":"https://www.amazon.com.au/dp/B0CMCPY4VG","image":"https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR.jpg","title":"Nova Lite","brand":"GameSir","productName":"Nova Lite","merchant":"Amazon","rawPrice":32,"rawMsrp":45,"price":"32","msrp":"45","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$13","savingType":"amount","isPrime":false,"starRating":null,"description":"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.","text":"\u003cp\u003eOur 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.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-15","url":"https://www.amazon.com.au/dp/B07MG5547J","image":"https://cdn.mos.cms.futurecdn.net/CpEke9LRsjxAHdxrhG7A8X.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/CpEke9LRsjxAHdxrhG7A8X.jpg","title":"G502 Hero","brand":"Logitech","productName":"G502 Hero","merchant":"Amazon","rawPrice":55.99,"rawMsrp":149.95,"price":"55.99","msrp":"149.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$93.96","savingType":"amount","isPrime":false,"starRating":null,"description":"Logitech's 502 series is extremely well regarded, and this Hero version saw an upgrade to the sensor. They're famed for their reliability and flawless operation. They also look glorious, eschewing today's minimalist looks for a statement that says \u0026quot;that's right, I'm dangerous.\u0026quot;","text":"\u003cp\u003eLogitech's 502 series is extremely well regarded, and this Hero version saw an upgrade to the sensor. They're famed for their reliability and flawless operation. They also look glorious, eschewing today's minimalist looks for a statement that says \u0026quot;that's right, I'm dangerous.\u0026quot;\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-8","url":"https://www.amazon.com.au/CORSAIR-Membrane-Wired-Gaming-Keyboard/dp/B0CP6BR96G","image":"https://cdn.mos.cms.futurecdn.net/hCzSayyAe4ZYCjzREFjJYF.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/hCzSayyAe4ZYCjzREFjJYF.jpg","title":"K55 Core Membrane","brand":"Corsair","productName":"K55 Core Membrane","merchant":"Amazon","rawPrice":59,"rawMsrp":79.95,"price":"59","msrp":"79.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$20.95","savingType":"amount","isPrime":false,"starRating":null,"description":"This discount makes an affordable keyboard much more so, dipping it into impulse buy territory. Membrane keyboards aren't for everyone - they lack the gratifying tactility of their mechanical siblings—but if you like 'em, or are curious, this is a trick. It's a wired affair with ten-zone RGB, spill resistance, and—naturally unusually quiet button presses.","text":"\u003cp\u003eThis discount makes an affordable keyboard much more so, dipping it into impulse buy territory. Membrane keyboards aren't for everyone - they lack the gratifying tactility of their mechanical siblings—but if you like 'em, or are curious, this is a trick. It's a wired affair with ten-zone RGB, spill resistance, and—naturally unusually quiet button presses.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-11","url":"https://www.amazon.com.au/dp/B01K48R5V4","image":"https://cdn.mos.cms.futurecdn.net/ZcBJ4EUisHsNDt77uYcuWK.webp","fallbackImage":"https://cdn.mos.cms.futurecdn.net/ZcBJ4EUisHsNDt77uYcuWK.webp","title":"G G213 Prodigy","brand":"Logitech","productName":"G G213 Prodigy","merchant":"Amazon","rawPrice":72,"rawMsrp":129.95,"price":"72","msrp":"129.95","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$57.95","savingType":"amount","isPrime":false,"starRating":null,"description":"If you fancy a new keyboard but are averse to spending more than AU$100, this Logitech slab will prove mighty irresistible. We haven't reviewed it, but we've tested tonnes of great Logitech gear, and at this price you're getting some great features including \u0026quot;spill resistance\u0026quot; and the full RGB experience.","text":"\u003cp\u003eIf you fancy a new keyboard but are averse to spending more than AU$100, this Logitech slab will prove mighty irresistible. We haven't reviewed it, but we've tested tonnes of great Logitech gear, and at this price you're getting some great features including \u0026quot;spill resistance\u0026quot; and the full RGB experience.\u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-KZZhYzyEWnMMHMP5SjoAbU-13","url":"https://www.amazon.com.au/CORSAIR-Sabre-Ultralight-Wireless-Gaming/dp/B0FKJ2J2R8/","image":"https://cdn.mos.cms.futurecdn.net/cW72DJwAyNRGpScgFDYEWg.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/cW72DJwAyNRGpScgFDYEWg.jpg","title":"Sabre v2 Pro","brand":"Corsair","productName":"Sabre v2 Pro","merchant":"Amazon","rawPrice":79,"rawMsrp":169,"price":"79","msrp":"169","currency":"A$","isoCurrency":"AUD","isCheckPrice":false,"savingLabel":"Save A$90","savingType":"amount","isPrime":false,"starRating":null,"description":"The Corsair Sabre V2 Pro is one of PC Gamer's best reviewed gaming mice of 2025. Jacob Fox loved its near-impossible lightness (36g!), app-free ease of use, brilliant sensor and robust build, though didn't like that it can only store one onboard profile. Look at the specs: 8,000Hz Hyper-Polling, 33,000 DPI, and up to 70 hours of battery life.","text":"\u003cp\u003eThe Corsair Sabre V2 Pro is one of PC Gamer's best reviewed gaming mice of 2025. Jacob Fox \u003ca href=\"https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/\"\u003eloved\u003c/a\u003e its near-impossible lightness (36g!), app-free ease of use, brilliant sensor and robust build, though didn't like that it can only store one onboard profile. Look at the specs: 8,000Hz Hyper-Polling, 33,000 DPI, and up to 70 hours of battery life. \u003c/p\u003e","authorName":"Shaun Prescott","authorRole":"Australian Editor","authorImage":"https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png","documentUrl":"best-amazon-prime-day-pc-gaming-deals-in-australia","modifiedDate":"2026-09-28T04:01:12Z","isFeatured":false,"hasCommerceOffer":true}]},"regionalDealRailData":{"US":{"brands":[{"formatted_value":"Acer","count":13},{"formatted_value":"Samsung","count":12},{"formatted_value":"MSI","count":11},{"formatted_value":"Logitech","count":7},{"formatted_value":"HyperX","count":5},{"formatted_value":"LG","count":5},{"formatted_value":"Razer","count":4},{"formatted_value":"Yawyore","count":3},{"formatted_value":"Koorui","count":3},{"formatted_value":"ASRock","count":3},{"formatted_value":"Kingston","count":2},{"formatted_value":"Crucial","count":2},{"formatted_value":"Team Group","count":2},{"formatted_value":"Lenovo","count":2},{"formatted_value":"Skytech","count":2},{"formatted_value":"Gigabyte","count":2},{"formatted_value":"Asus","count":2},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Glorious","count":1},{"formatted_value":"Nothing","count":1},{"formatted_value":"HP","count":1},{"formatted_value":"KTC","count":1},{"formatted_value":"Innocn","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1}],"freeformTagCounts":{"hardware":66,"mouse":6,"gaming-mouse":6,"prime-day":6,"amazon-prime-day-2026":12,"amazon-prime-day":30,"prime-day-deals":24,"deals":31,"deal":32,"big-deal-days":30,"gaming-headset":6,"amazon-prime":18,"ssd":4,"pc-deals":18,"gaming-laptops":4,"intel":6,"nvidia":4,"radeon":2,"gaming-pc":3,"gaming-monitor":9,"ryzen":2,"monitors":8,"solid-state-drive":4,"solid-state":4,"hdd":4,"hard-drive":4,"storage":4,"gaming-laptop":4,"budget":4,"cheap":4,"labor-day":38,"gaming-pc-deals":1,"collections":1,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"monitor":1,"monitor-deals":1,"4k-monitor":1,"gaming-monitor-deal":1,"4k":1,"4k-gaming":1,"acer":1},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"amazon-prime-day","label":"Amazon Prime Day","requestValue":"Amazon Prime Day"},{"handle":"big-deal-days","label":"Big Deal Days","requestValue":"Big Deal Days"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"amazon-prime-day-2026","label":"Amazon Prime Day 2026","requestValue":"Amazon Prime Day 2026"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"mouse","label":"mouse","requestValue":"mouse"},{"handle":"gaming-mouse","label":"gaming mouse","requestValue":"gaming mouse"},{"handle":"prime-day","label":"Prime Day","requestValue":"Prime Day"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"gaming-laptops","label":"gaming laptops","requestValue":"gaming laptops"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"radeon","label":"Radeon","requestValue":"Radeon"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"acer","label":"Acer","requestValue":"Acer"}],"tagCounts":{"Gaming Mice":6,"Hardware":66,"Gaming Headsets":6,"Gaming Audio":6,"SSDs":4,"Storage":4,"Gaming Laptops":4,"Gaming PCs":7,"Gaming Monitors":9,"Controllers":1},"tags":["Hardware","Gaming Monitors","Gaming PCs","Gaming Mice","Gaming Headsets","Gaming Audio","SSDs","Storage","Gaming Laptops","Controllers"],"totalAuthorCount":5,"totalDealCount":56},"GB":{"brands":[{"formatted_value":"Logitech","count":6},{"formatted_value":"Steelseries","count":2},{"formatted_value":"EarFun","count":2},{"formatted_value":"Lexar","count":2},{"formatted_value":"AOC","count":2},{"formatted_value":"MSI","count":2},{"formatted_value":"JBL","count":1},{"formatted_value":"Razer","count":1},{"formatted_value":"HyperX","count":1},{"formatted_value":"Turtle Beach","count":1}],"freeformTagCounts":{"hardware":17,"mouse":5,"gaming-mouse":5,"prime-day":5,"amazon-prime-day-2026":14,"amazon-prime-day":17,"prime-day-deals":8,"deals":17,"deal":17,"big-deal-days":17,"gaming-headset":9,"amazon-prime":3,"ssd":1,"pc-deals":3,"gaming-monitor":2,"monitors":2,"solid-state-drive":1,"solid-state":1,"hdd":1,"hard-drive":1,"storage":1},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"amazon-prime-day","label":"Amazon Prime Day","requestValue":"Amazon Prime Day"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"big-deal-days","label":"Big Deal Days","requestValue":"Big Deal Days"},{"handle":"amazon-prime-day-2026","label":"Amazon Prime Day 2026","requestValue":"Amazon Prime Day 2026"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"},{"handle":"mouse","label":"mouse","requestValue":"mouse"},{"handle":"gaming-mouse","label":"gaming mouse","requestValue":"gaming mouse"},{"handle":"prime-day","label":"Prime Day","requestValue":"Prime Day"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"}],"tagCounts":{"Gaming Mice":5,"Hardware":17,"Gaming Headsets":9,"Gaming Audio":9,"SSDs":1,"Storage":1,"Gaming Monitors":2},"tags":["Hardware","Gaming Headsets","Gaming Audio","Gaming Mice","Gaming Monitors","SSDs","Storage"],"totalAuthorCount":4,"totalDealCount":17},"AU":{"brands":[{"formatted_value":"Logitech","count":7},{"formatted_value":"Corsair","count":4},{"formatted_value":"JBL","count":2},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"GameSir","count":1},{"formatted_value":"8BitDo","count":1},{"formatted_value":"HyperX","count":1},{"formatted_value":"Asus","count":1},{"formatted_value":"Razer","count":1},{"formatted_value":"SteelSeries","count":1}],"freeformTagCounts":{"hardware":20,"amazon-prime":20,"pc-deals":20,"deals":20,"prime-day-deals":20},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"amazon-prime","label":"Amazon Prime","requestValue":"Amazon Prime"},{"handle":"pc-deals","label":"PC deals","requestValue":"PC deals"},{"handle":"deals","label":"Deals","requestValue":"Deals"},{"handle":"prime-day-deals","label":"prime day deals","requestValue":"prime day deals"}],"tagCounts":{"Hardware":20},"tags":["Hardware"],"totalAuthorCount":1,"totalDealCount":20}}}</script></fc-author-commerce-widget><script>(()=>{var Z1=Object.create;var cg=Object.defineProperty;var W1=Object.getOwnPropertyDescriptor;var I1=Object.getOwnPropertyNames;var J1=Object.getPrototypeOf,$1=Object.prototype.hasOwnProperty;var un=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var eb=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of I1(t))!$1.call(e,l)&&l!==n&&cg(e,l,{get:()=>t[l],enumerable:!(a=W1(t,l))||a.enumerable});return e};var B=(e,t,n)=>(n=e!=null?Z1(J1(e)):{},eb(t||!e||!e.__esModule?cg(n,"default",{value:e,enumerable:!0}):n,e));var Ag=un(z=>{"use strict";var Tc=Symbol.for("react.transitional.element"),tb=Symbol.for("react.portal"),nb=Symbol.for("react.fragment"),ab=Symbol.for("react.strict_mode"),lb=Symbol.for("react.profiler"),ib=Symbol.for("react.consumer"),rb=Symbol.for("react.context"),ob=Symbol.for("react.forward_ref"),ub=Symbol.for("react.suspense"),cb=Symbol.for("react.memo"),mg=Symbol.for("react.lazy"),sb=Symbol.for("react.activity"),sg=Symbol.iterator;function db(e){return e===null||typeof e!="object"?null:(e=sg&&e[sg]||e["@@iterator"],typeof e=="function"?e:null)}var hg={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},pg=Object.assign,yg={};function ml(e,t,n){this.props=e,this.context=t,this.refs=yg,this.updater=n||hg}ml.prototype.isReactComponent={};ml.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};ml.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function vg(){}vg.prototype=ml.prototype;function Ec(e,t,n){this.props=e,this.context=t,this.refs=yg,this.updater=n||hg}var Dc=Ec.prototype=new vg;Dc.constructor=Ec;pg(Dc,ml.prototype);Dc.isPureReactComponent=!0;var dg=Array.isArray;function Rc(){}var he={H:null,A:null,T:null,S:null},bg=Object.prototype.hasOwnProperty;function xc(e,t,n){var a=n.ref;return{$$typeof:Tc,type:e,key:t,ref:a!==void 0?a:null,props:n}}function fb(e,t){return xc(e.type,t,e.props)}function Mc(e){return typeof e=="object"&&e!==null&&e.$$typeof===Tc}function gb(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var fg=/\/+/g;function Cc(e,t){return typeof e=="object"&&e!==null&&e.key!=null?gb(""+e.key):t.toString(36)}function mb(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Rc,Rc):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function gl(e,t,n,a,l){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var r=!1;if(e===null)r=!0;else switch(i){case"bigint":case"string":case"number":r=!0;break;case"object":switch(e.$$typeof){case Tc:case tb:r=!0;break;case mg:return r=e._init,gl(r(e._payload),t,n,a,l)}}if(r)return l=l(e),r=a===""?"."+Cc(e,0):a,dg(l)?(n="",r!=null&&(n=r.replace(fg,"$&/")+"/"),gl(l,t,n,"",function(c){return c})):l!=null&&(Mc(l)&&(l=fb(l,n+(l.key==null||e&&e.key===l.key?"":(""+l.key).replace(fg,"$&/")+"/")+r)),t.push(l)),1;r=0;var o=a===""?".":a+":";if(dg(e))for(var u=0;u<e.length;u++)a=e[u],i=o+Cc(a,u),r+=gl(a,t,n,i,l);else if(u=db(e),typeof u=="function")for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,i=o+Cc(a,u++),r+=gl(a,t,n,i,l);else if(i==="object"){if(typeof e.then=="function")return gl(mb(e),t,n,a,l);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return r}function ro(e,t,n){if(e==null)return e;var a=[],l=0;return gl(e,a,"","",function(i){return t.call(n,i,l++)}),a}function hb(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var gg=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},pb={map:ro,forEach:function(e,t,n){ro(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ro(e,function(){t++}),t},toArray:function(e){return ro(e,function(t){return t})||[]},only:function(e){if(!Mc(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};z.Activity=sb;z.Children=pb;z.Component=ml;z.Fragment=nb;z.Profiler=lb;z.PureComponent=Ec;z.StrictMode=ab;z.Suspense=ub;z.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=he;z.__COMPILER_RUNTIME={__proto__:null,c:function(e){return he.H.useMemoCache(e)}};z.cache=function(e){return function(){return e.apply(null,arguments)}};z.cacheSignal=function(){return null};z.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=pg({},e.props),l=e.key;if(t!=null)for(i in t.key!==void 0&&(l=""+t.key),t)!bg.call(t,i)||i==="key"||i==="__self"||i==="__source"||i==="ref"&&t.ref===void 0||(a[i]=t[i]);var i=arguments.length-2;if(i===1)a.children=n;else if(1<i){for(var r=Array(i),o=0;o<i;o++)r[o]=arguments[o+2];a.children=r}return xc(e.type,l,a)};z.createContext=function(e){return e={$$typeof:rb,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:ib,_context:e},e};z.createElement=function(e,t,n){var a,l={},i=null;if(t!=null)for(a in t.key!==void 0&&(i=""+t.key),t)bg.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(l[a]=t[a]);var r=arguments.length-2;if(r===1)l.children=n;else if(1<r){for(var o=Array(r),u=0;u<r;u++)o[u]=arguments[u+2];l.children=o}if(e&&e.defaultProps)for(a in r=e.defaultProps,r)l[a]===void 0&&(l[a]=r[a]);return xc(e,i,l)};z.createRef=function(){return{current:null}};z.forwardRef=function(e){return{$$typeof:ob,render:e}};z.isValidElement=Mc;z.lazy=function(e){return{$$typeof:mg,_payload:{_status:-1,_result:e},_init:hb}};z.memo=function(e,t){return{$$typeof:cb,type:e,compare:t===void 0?null:t}};z.startTransition=function(e){var t=he.T,n={};he.T=n;try{var a=e(),l=he.S;l!==null&&l(n,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(Rc,gg)}catch(i){gg(i)}finally{t!==null&&n.types!==null&&(t.types=n.types),he.T=t}};z.unstable_useCacheRefresh=function(){return he.H.useCacheRefresh()};z.use=function(e){return he.H.use(e)};z.useActionState=function(e,t,n){return he.H.useActionState(e,t,n)};z.useCallback=function(e,t){return he.H.useCallback(e,t)};z.useContext=function(e){return he.H.useContext(e)};z.useDebugValue=function(){};z.useDeferredValue=function(e,t){return he.H.useDeferredValue(e,t)};z.useEffect=function(e,t){return he.H.useEffect(e,t)};z.useEffectEvent=function(e){return he.H.useEffectEvent(e)};z.useId=function(){return he.H.useId()};z.useImperativeHandle=function(e,t,n){return he.H.useImperativeHandle(e,t,n)};z.useInsertionEffect=function(e,t){return he.H.useInsertionEffect(e,t)};z.useLayoutEffect=function(e,t){return he.H.useLayoutEffect(e,t)};z.useMemo=function(e,t){return he.H.useMemo(e,t)};z.useOptimistic=function(e,t){return he.H.useOptimistic(e,t)};z.useReducer=function(e,t,n){return he.H.useReducer(e,t,n)};z.useRef=function(e){return he.H.useRef(e)};z.useState=function(e){return he.H.useState(e)};z.useSyncExternalStore=function(e,t,n){return he.H.useSyncExternalStore(e,t,n)};z.useTransition=function(){return he.H.useTransition()};z.version="19.2.8"});var ft=un((zS,wg)=>{"use strict";wg.exports=Ag()});var Bg=un(Se=>{"use strict";function Oc(e,t){var n=e.length;e.push(t);e:for(;0<n;){var a=n-1>>>1,l=e[a];if(0<oo(l,t))e[a]=t,e[n]=l,n=a;else break e}}function cn(e){return e.length===0?null:e[0]}function co(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,l=e.length,i=l>>>1;a<i;){var r=2*(a+1)-1,o=e[r],u=r+1,c=e[u];if(0>oo(o,n))u<l&&0>oo(c,o)?(e[a]=c,e[u]=n,a=u):(e[a]=o,e[r]=n,a=r);else if(u<l&&0>oo(c,n))e[a]=c,e[u]=n,a=u;else break e}}return t}function oo(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}Se.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Sg=performance,Se.unstable_now=function(){return Sg.now()}):(_c=Date,Cg=_c.now(),Se.unstable_now=function(){return _c.now()-Cg});var Sg,_c,Cg,wn=[],Qn=[],yb=1,Ut=null,et=3,kc=!1,Mi=!1,_i=!1,Lc=!1,Eg=typeof setTimeout=="function"?setTimeout:null,Dg=typeof clearTimeout=="function"?clearTimeout:null,Rg=typeof setImmediate<"u"?setImmediate:null;function uo(e){for(var t=cn(Qn);t!==null;){if(t.callback===null)co(Qn);else if(t.startTime<=e)co(Qn),t.sortIndex=t.expirationTime,Oc(wn,t);else break;t=cn(Qn)}}function Hc(e){if(_i=!1,uo(e),!Mi)if(cn(wn)!==null)Mi=!0,pl||(pl=!0,hl());else{var t=cn(Qn);t!==null&&zc(Hc,t.startTime-e)}}var pl=!1,Bi=-1,xg=5,Mg=-1;function _g(){return Lc?!0:!(Se.unstable_now()-Mg<xg)}function Bc(){if(Lc=!1,pl){var e=Se.unstable_now();Mg=e;var t=!0;try{e:{Mi=!1,_i&&(_i=!1,Dg(Bi),Bi=-1),kc=!0;var n=et;try{t:{for(uo(e),Ut=cn(wn);Ut!==null&&!(Ut.expirationTime>e&&_g());){var a=Ut.callback;if(typeof a=="function"){Ut.callback=null,et=Ut.priorityLevel;var l=a(Ut.expirationTime<=e);if(e=Se.unstable_now(),typeof l=="function"){Ut.callback=l,uo(e),t=!0;break t}Ut===cn(wn)&&co(wn),uo(e)}else co(wn);Ut=cn(wn)}if(Ut!==null)t=!0;else{var i=cn(Qn);i!==null&&zc(Hc,i.startTime-e),t=!1}}break e}finally{Ut=null,et=n,kc=!1}t=void 0}}finally{t?hl():pl=!1}}}var hl;typeof Rg=="function"?hl=function(){Rg(Bc)}:typeof MessageChannel<"u"?(Nc=new MessageChannel,Tg=Nc.port2,Nc.port1.onmessage=Bc,hl=function(){Tg.postMessage(null)}):hl=function(){Eg(Bc,0)};var Nc,Tg;function zc(e,t){Bi=Eg(function(){e(Se.unstable_now())},t)}Se.unstable_IdlePriority=5;Se.unstable_ImmediatePriority=1;Se.unstable_LowPriority=4;Se.unstable_NormalPriority=3;Se.unstable_Profiling=null;Se.unstable_UserBlockingPriority=2;Se.unstable_cancelCallback=function(e){e.callback=null};Se.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):xg=0<e?Math.floor(1e3/e):5};Se.unstable_getCurrentPriorityLevel=function(){return et};Se.unstable_next=function(e){switch(et){case 1:case 2:case 3:var t=3;break;default:t=et}var n=et;et=t;try{return e()}finally{et=n}};Se.unstable_requestPaint=function(){Lc=!0};Se.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=et;et=e;try{return t()}finally{et=n}};Se.unstable_scheduleCallback=function(e,t,n){var a=Se.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0<n?a+n:a):n=a,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return l=n+l,e={id:yb++,callback:t,priorityLevel:e,startTime:n,expirationTime:l,sortIndex:-1},n>a?(e.sortIndex=n,Oc(Qn,e),cn(wn)===null&&e===cn(Qn)&&(_i?(Dg(Bi),Bi=-1):_i=!0,zc(Hc,n-a))):(e.sortIndex=l,Oc(wn,e),Mi||kc||(Mi=!0,pl||(pl=!0,hl()))),e};Se.unstable_shouldYield=_g;Se.unstable_wrapCallback=function(e){var t=et;return function(){var n=et;et=t;try{return e.apply(this,arguments)}finally{et=n}}}});var Og=un((GS,Ng)=>{"use strict";Ng.exports=Bg()});var Lg=un(ot=>{"use strict";var vb=ft();function kg(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Kn(){}var rt={d:{f:Kn,r:function(){throw Error(kg(522))},D:Kn,C:Kn,L:Kn,m:Kn,X:Kn,S:Kn,M:Kn},p:0,findDOMNode:null},bb=Symbol.for("react.portal");function Ab(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:bb,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}var Ni=vb.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function so(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}ot.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=rt;ot.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(kg(299));return Ab(e,t,null,n)};ot.flushSync=function(e){var t=Ni.T,n=rt.p;try{if(Ni.T=null,rt.p=2,e)return e()}finally{Ni.T=t,rt.p=n,rt.d.f()}};ot.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,rt.d.C(e,t))};ot.prefetchDNS=function(e){typeof e=="string"&&rt.d.D(e)};ot.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var n=t.as,a=so(n,t.crossOrigin),l=typeof t.integrity=="string"?t.integrity:void 0,i=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;n==="style"?rt.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:l,fetchPriority:i}):n==="script"&&rt.d.X(e,{crossOrigin:a,integrity:l,fetchPriority:i,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};ot.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var n=so(t.as,t.crossOrigin);rt.d.M(e,{crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&rt.d.M(e)};ot.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var n=t.as,a=so(n,t.crossOrigin);rt.d.L(e,n,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};ot.preloadModule=function(e,t){if(typeof e=="string")if(t){var n=so(t.as,t.crossOrigin);rt.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else rt.d.m(e)};ot.requestFormReset=function(e){rt.d.r(e)};ot.unstable_batchedUpdates=function(e,t){return e(t)};ot.useFormState=function(e,t,n){return Ni.H.useFormState(e,t,n)};ot.useFormStatus=function(){return Ni.H.useHostTransitionStatus()};ot.version="19.2.8"});var Ug=un((qS,zg)=>{"use strict";function Hg(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Hg)}catch(e){console.error(e)}}Hg(),zg.exports=Lg()});var Wy=un(Hu=>{"use strict";var Ge=Og(),sh=ft(),wb=Ug();function S(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function dh(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function vr(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function fh(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function gh(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function Gg(e){if(vr(e)!==e)throw Error(S(188))}function Sb(e){var t=e.alternate;if(!t){if(t=vr(e),t===null)throw Error(S(188));return t!==e?null:e}for(var n=e,a=t;;){var l=n.return;if(l===null)break;var i=l.alternate;if(i===null){if(a=l.return,a!==null){n=a;continue}break}if(l.child===i.child){for(i=l.child;i;){if(i===n)return Gg(l),e;if(i===a)return Gg(l),t;i=i.sibling}throw Error(S(188))}if(n.return!==a.return)n=l,a=i;else{for(var r=!1,o=l.child;o;){if(o===n){r=!0,n=l,a=i;break}if(o===a){r=!0,a=l,n=i;break}o=o.sibling}if(!r){for(o=i.child;o;){if(o===n){r=!0,n=i,a=l;break}if(o===a){r=!0,a=i,n=l;break}o=o.sibling}if(!r)throw Error(S(189))}}if(n.alternate!==a)throw Error(S(190))}if(n.tag!==3)throw Error(S(188));return n.stateNode.current===n?e:t}function mh(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=mh(e),t!==null)return t;e=e.sibling}return null}var ve=Object.assign,Cb=Symbol.for("react.element"),fo=Symbol.for("react.transitional.element"),Pi=Symbol.for("react.portal"),Sl=Symbol.for("react.fragment"),hh=Symbol.for("react.strict_mode"),ys=Symbol.for("react.profiler"),ph=Symbol.for("react.consumer"),Mn=Symbol.for("react.context"),fd=Symbol.for("react.forward_ref"),vs=Symbol.for("react.suspense"),bs=Symbol.for("react.suspense_list"),gd=Symbol.for("react.memo"),Zn=Symbol.for("react.lazy");Symbol.for("react.scope");var As=Symbol.for("react.activity");Symbol.for("react.legacy_hidden");Symbol.for("react.tracing_marker");var Rb=Symbol.for("react.memo_cache_sentinel");Symbol.for("react.view_transition");var Pg=Symbol.iterator;function Oi(e){return e===null||typeof e!="object"?null:(e=Pg&&e[Pg]||e["@@iterator"],typeof e=="function"?e:null)}var Tb=Symbol.for("react.client.reference");function ws(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Tb?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Sl:return"Fragment";case ys:return"Profiler";case hh:return"StrictMode";case vs:return"Suspense";case bs:return"SuspenseList";case As:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case Pi:return"Portal";case Mn:return e.displayName||"Context";case ph:return(e._context.displayName||"Context")+".Consumer";case fd:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case gd:return t=e.displayName||null,t!==null?t:ws(e.type)||"Memo";case Zn:t=e._payload,e=e._init;try{return ws(e(t))}catch{}}return null}var qi=Array.isArray,L=sh.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,$=wb.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,za={pending:!1,data:null,method:null,action:null},Ss=[],Cl=-1;function mn(e){return{current:e}}function Fe(e){0>Cl||(e.current=Ss[Cl],Ss[Cl]=null,Cl--)}function ge(e,t){Cl++,Ss[Cl]=e.current,e.current=t}var gn=mn(null),lr=mn(null),ra=mn(null),Vo=mn(null);function Xo(e,t){switch(ge(ra,t),ge(lr,e),ge(gn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Qm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Qm(t),e=Hy(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Fe(gn),ge(gn,e)}function ql(){Fe(gn),Fe(lr),Fe(ra)}function Cs(e){e.memoizedState!==null&&ge(Vo,e);var t=gn.current,n=Hy(t,e.type);t!==n&&(ge(lr,e),ge(gn,n))}function Qo(e){lr.current===e&&(Fe(gn),Fe(lr)),Vo.current===e&&(Fe(Vo),hr._currentValue=za)}var Uc,qg;function Oa(e){if(Uc===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Uc=t&&t[1]||"",qg=-1<n.stack.indexOf(`    at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return``+Uc+e+qg}var Gc=!1;function Pc(e,t){if(!e||Gc)return"";Gc=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var f=function(){throw Error()};if(Object.defineProperty(f.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(f,[])}catch(m){var d=m}Reflect.construct(e,[],f)}else{try{f.call()}catch(m){d=m}e.call(f.prototype)}}else{try{throw Error()}catch(m){d=m}(f=e())&&typeof f.catch=="function"&&f.catch(function(){})}}catch(m){if(m&&d&&typeof m.stack=="string")return[m.stack,d.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var l=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");l&&l.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var i=a.DetermineComponentFrameRoot(),r=i[0],o=i[1];if(r&&o){var u=r.split(``),c=o.split(``);for(l=a=0;a<u.length&&!u[a].includes("DetermineComponentFrameRoot");)a++;for(;l<c.length&&!c[l].includes("DetermineComponentFrameRoot");)l++;if(a===u.length||l===c.length)for(a=u.length-1,l=c.length-1;1<=a&&0<=l&&u[a]!==c[l];)l--;for(;1<=a&&0<=l;a--,l--)if(u[a]!==c[l]){if(a!==1||l!==1)do if(a--,l--,0>l||u[a]!==c[l]){var s=``+u[a].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{Gc=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Oa(n):""}function Eb(e,t){switch(e.tag){case 26:case 27:case 5:return Oa(e.type);case 16:return Oa("Lazy");case 13:return e.child!==t&&t!==null?Oa("Suspense Fallback"):Oa("Suspense");case 19:return Oa("SuspenseList");case 0:case 15:return Pc(e.type,!1);case 11:return Pc(e.type.render,!1);case 1:return Pc(e.type,!0);case 31:return Oa("Activity");default:return""}}function Fg(e){try{var t="",n=null;do t+=Eb(e,n),n=e,e=e.return;while(e);return t}catch(a){return`Error generating stack: `+a.message+``+a.stack}}var Rs=Object.prototype.hasOwnProperty,md=Ge.unstable_scheduleCallback,qc=Ge.unstable_cancelCallback,Db=Ge.unstable_shouldYield,xb=Ge.unstable_requestPaint,Dt=Ge.unstable_now,Mb=Ge.unstable_getCurrentPriorityLevel,yh=Ge.unstable_ImmediatePriority,vh=Ge.unstable_UserBlockingPriority,Ko=Ge.unstable_NormalPriority,_b=Ge.unstable_LowPriority,bh=Ge.unstable_IdlePriority,Bb=Ge.log,Nb=Ge.unstable_setDisableYieldValue,br=null,xt=null;function ta(e){if(typeof Bb=="function"&&Nb(e),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(br,e)}catch{}}var Mt=Math.clz32?Math.clz32:Lb,Ob=Math.log,kb=Math.LN2;function Lb(e){return e>>>=0,e===0?32:31-(Ob(e)/kb|0)|0}var go=256,mo=262144,ho=4194304;function ka(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Au(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var l=0,i=e.suspendedLanes,r=e.pingedLanes;e=e.warmLanes;var o=a&134217727;return o!==0?(a=o&~i,a!==0?l=ka(a):(r&=o,r!==0?l=ka(r):n||(n=o&~e,n!==0&&(l=ka(n))))):(o=a&~i,o!==0?l=ka(o):r!==0?l=ka(r):n||(n=a&~e,n!==0&&(l=ka(n)))),l===0?0:t!==0&&t!==l&&(t&i)===0&&(i=l&-l,n=t&-t,i>=n||i===32&&(n&4194048)!==0)?t:l}function Ar(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Hb(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ah(){var e=ho;return ho<<=1,(ho&62914560)===0&&(ho=4194304),e}function Fc(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function wr(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function zb(e,t,n,a,l,i){var r=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var o=e.entanglements,u=e.expirationTimes,c=e.hiddenUpdates;for(n=r&~n;0<n;){var s=31-Mt(n),f=1<<s;o[s]=0,u[s]=-1;var d=c[s];if(d!==null)for(c[s]=null,s=0;s<d.length;s++){var m=d[s];m!==null&&(m.lane&=-536870913)}n&=~f}a!==0&&wh(e,a,0),i!==0&&l===0&&e.tag!==0&&(e.suspendedLanes|=i&~(r&~t))}function wh(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-Mt(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|n&261930}function Sh(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-Mt(n),l=1<<a;l&t|e[a]&t&&(e[a]|=t),n&=~l}}function Ch(e,t){var n=t&-t;return n=(n&42)!==0?1:hd(n),(n&(e.suspendedLanes|t))!==0?0:n}function hd(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function pd(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function Rh(){var e=$.p;return e!==0?e:(e=window.event,e===void 0?32:Qy(e.type))}function jg(e,t){var n=$.p;try{return $.p=e,t()}finally{$.p=n}}var ba=Math.random().toString(36).slice(2),Ve="__reactFiber$"+ba,vt="__reactProps$"+ba,Jl="__reactContainer$"+ba,Ts="__reactEvents$"+ba,Ub="__reactListeners$"+ba,Gb="__reactHandles$"+ba,Yg="__reactResources$"+ba,Sr="__reactMarker$"+ba;function yd(e){delete e[Ve],delete e[vt],delete e[Ts],delete e[Ub],delete e[Gb]}function Rl(e){var t=e[Ve];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jl]||n[Ve]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Jm(e);e!==null;){if(n=e[Ve])return n;e=Jm(e)}return t}e=n,n=e.parentNode}return null}function $l(e){if(e=e[Ve]||e[Jl]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Fi(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(S(33))}function kl(e){var t=e[Yg];return t||(t=e[Yg]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function qe(e){e[Sr]=!0}var Th=new Set,Eh={};function Qa(e,t){Fl(e,t),Fl(e+"Capture",t)}function Fl(e,t){for(Eh[e]=t,e=0;e<t.length;e++)Th.add(t[e])}var Pb=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Vg={},Xg={};function qb(e){return Rs.call(Xg,e)?!0:Rs.call(Vg,e)?!1:Pb.test(e)?Xg[e]=!0:(Vg[e]=!0,!1)}function _o(e,t,n){if(qb(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+n)}}function po(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+n)}}function Sn(e,t,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttributeNS(t,n,""+a)}}function Pt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Dh(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Fb(e,t,n){var a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var l=a.get,i=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(r){n=""+r,i.call(this,r)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(r){n=""+r},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Es(e){if(!e._valueTracker){var t=Dh(e)?"checked":"value";e._valueTracker=Fb(e,t,""+e[t])}}function xh(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=Dh(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function Zo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var jb=/[\n"\\]/g;function jt(e){return e.replace(jb,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Ds(e,t,n,a,l,i,r,o){e.name="",r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?e.type=r:e.removeAttribute("type"),t!=null?r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Pt(t)):e.value!==""+Pt(t)&&(e.value=""+Pt(t)):r!=="submit"&&r!=="reset"||e.removeAttribute("value"),t!=null?xs(e,r,Pt(t)):n!=null?xs(e,r,Pt(n)):a!=null&&e.removeAttribute("value"),l==null&&i!=null&&(e.defaultChecked=!!i),l!=null&&(e.checked=l&&typeof l!="function"&&typeof l!="symbol"),o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?e.name=""+Pt(o):e.removeAttribute("name")}function Mh(e,t,n,a,l,i,r,o){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.type=i),t!=null||n!=null){if(!(i!=="submit"&&i!=="reset"||t!=null)){Es(e);return}n=n!=null?""+Pt(n):"",t=t!=null?""+Pt(t):n,o||t===e.value||(e.value=t),e.defaultValue=t}a=a??l,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=o?e.checked:!!a,e.defaultChecked=!!a,r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"&&(e.name=r),Es(e)}function xs(e,t,n){t==="number"&&Zo(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Ll(e,t,n,a){if(e=e.options,t){t={};for(var l=0;l<n.length;l++)t["$"+n[l]]=!0;for(n=0;n<e.length;n++)l=t.hasOwnProperty("$"+e[n].value),e[n].selected!==l&&(e[n].selected=l),l&&a&&(e[n].defaultSelected=!0)}else{for(n=""+Pt(n),t=null,l=0;l<e.length;l++){if(e[l].value===n){e[l].selected=!0,a&&(e[l].defaultSelected=!0);return}t!==null||e[l].disabled||(t=e[l])}t!==null&&(t.selected=!0)}}function _h(e,t,n){if(t!=null&&(t=""+Pt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+Pt(n):""}function Bh(e,t,n,a){if(t==null){if(a!=null){if(n!=null)throw Error(S(92));if(qi(a)){if(1<a.length)throw Error(S(93));a=a[0]}n=a}n==null&&(n=""),t=n}n=Pt(t),e.defaultValue=n,a=e.textContent,a===n&&a!==""&&a!==null&&(e.value=a),Es(e)}function jl(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Yb=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Qg(e,t,n){var a=t.indexOf("--")===0;n==null||typeof n=="boolean"||n===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,n):typeof n!="number"||n===0||Yb.has(t)?t==="float"?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function Nh(e,t,n){if(t!=null&&typeof t!="object")throw Error(S(62));if(e=e.style,n!=null){for(var a in n)!n.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="");for(var l in t)a=t[l],t.hasOwnProperty(l)&&n[l]!==a&&Qg(e,l,a)}else for(var i in t)t.hasOwnProperty(i)&&Qg(e,i,t[i])}function vd(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Vb=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Xb=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Bo(e){return Xb.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function _n(){}var Ms=null;function bd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Tl=null,Hl=null;function Kg(e){var t=$l(e);if(t&&(e=t.stateNode)){var n=e[vt]||null;e:switch(e=t.stateNode,t.type){case"input":if(Ds(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+jt(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var l=a[vt]||null;if(!l)throw Error(S(90));Ds(a,l.value,l.defaultValue,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name)}}for(t=0;t<n.length;t++)a=n[t],a.form===e.form&&xh(a)}break e;case"textarea":_h(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&Ll(e,!!n.multiple,t,!1)}}}var jc=!1;function Oh(e,t,n){if(jc)return e(t,n);jc=!0;try{var a=e(t);return a}finally{if(jc=!1,(Tl!==null||Hl!==null)&&(Nu(),Tl&&(t=Tl,e=Hl,Hl=Tl=null,Kg(t),e)))for(t=0;t<e.length;t++)Kg(e[t])}}function ir(e,t){var n=e.stateNode;if(n===null)return null;var a=n[vt]||null;if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(S(231,t,typeof n));return n}var Ln=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_s=!1;if(Ln)try{yl={},Object.defineProperty(yl,"passive",{get:function(){_s=!0}}),window.addEventListener("test",yl,yl),window.removeEventListener("test",yl,yl)}catch{_s=!1}var yl,na=null,Ad=null,No=null;function kh(){if(No)return No;var e,t=Ad,n=t.length,a,l="value"in na?na.value:na.textContent,i=l.length;for(e=0;e<n&&t[e]===l[e];e++);var r=n-e;for(a=1;a<=r&&t[n-a]===l[i-a];a++);return No=l.slice(e,1<a?1-a:void 0)}function Oo(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function yo(){return!0}function Zg(){return!1}function bt(e){function t(n,a,l,i,r){this._reactName=n,this._targetInst=l,this.type=a,this.nativeEvent=i,this.target=r,this.currentTarget=null;for(var o in e)e.hasOwnProperty(o)&&(n=e[o],this[o]=n?n(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented!=null?i.defaultPrevented:i.returnValue===!1)?yo:Zg,this.isPropagationStopped=Zg,this}return ve(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=yo)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=yo)},persist:function(){},isPersistent:yo}),t}var Ka={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},wu=bt(Ka),Cr=ve({},Ka,{view:0,detail:0}),Qb=bt(Cr),Yc,Vc,ki,Su=ve({},Cr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:wd,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ki&&(ki&&e.type==="mousemove"?(Yc=e.screenX-ki.screenX,Vc=e.screenY-ki.screenY):Vc=Yc=0,ki=e),Yc)},movementY:function(e){return"movementY"in e?e.movementY:Vc}}),Wg=bt(Su),Kb=ve({},Su,{dataTransfer:0}),Zb=bt(Kb),Wb=ve({},Cr,{relatedTarget:0}),Xc=bt(Wb),Ib=ve({},Ka,{animationName:0,elapsedTime:0,pseudoElement:0}),Jb=bt(Ib),$b=ve({},Ka,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),eA=bt($b),tA=ve({},Ka,{data:0}),Ig=bt(tA),nA={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},aA={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},lA={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function iA(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=lA[e])?!!t[e]:!1}function wd(){return iA}var rA=ve({},Cr,{key:function(e){if(e.key){var t=nA[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Oo(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?aA[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:wd,charCode:function(e){return e.type==="keypress"?Oo(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Oo(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),oA=bt(rA),uA=ve({},Su,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Jg=bt(uA),cA=ve({},Cr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:wd}),sA=bt(cA),dA=ve({},Ka,{propertyName:0,elapsedTime:0,pseudoElement:0}),fA=bt(dA),gA=ve({},Su,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),mA=bt(gA),hA=ve({},Ka,{newState:0,oldState:0}),pA=bt(hA),yA=[9,13,27,32],Sd=Ln&&"CompositionEvent"in window,Vi=null;Ln&&"documentMode"in document&&(Vi=document.documentMode);var vA=Ln&&"TextEvent"in window&&!Vi,Lh=Ln&&(!Sd||Vi&&8<Vi&&11>=Vi),$g=" ",em=!1;function Hh(e,t){switch(e){case"keyup":return yA.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var El=!1;function bA(e,t){switch(e){case"compositionend":return zh(t);case"keypress":return t.which!==32?null:(em=!0,$g);case"textInput":return e=t.data,e===$g&&em?null:e;default:return null}}function AA(e,t){if(El)return e==="compositionend"||!Sd&&Hh(e,t)?(e=kh(),No=Ad=na=null,El=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Lh&&t.locale!=="ko"?null:t.data;default:return null}}var wA={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function tm(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!wA[e.type]:t==="textarea"}function Uh(e,t,n,a){Tl?Hl?Hl.push(a):Hl=[a]:Tl=a,t=gu(t,"onChange"),0<t.length&&(n=new wu("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Xi=null,rr=null;function SA(e){Oy(e,0)}function Cu(e){var t=Fi(e);if(xh(t))return e}function nm(e,t){if(e==="change")return t}var Gh=!1;Ln&&(Ln?(bo="oninput"in document,bo||(Qc=document.createElement("div"),Qc.setAttribute("oninput","return;"),bo=typeof Qc.oninput=="function"),vo=bo):vo=!1,Gh=vo&&(!document.documentMode||9<document.documentMode));var vo,bo,Qc;function am(){Xi&&(Xi.detachEvent("onpropertychange",Ph),rr=Xi=null)}function Ph(e){if(e.propertyName==="value"&&Cu(rr)){var t=[];Uh(t,rr,e,bd(e)),Oh(SA,t)}}function CA(e,t,n){e==="focusin"?(am(),Xi=t,rr=n,Xi.attachEvent("onpropertychange",Ph)):e==="focusout"&&am()}function RA(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Cu(rr)}function TA(e,t){if(e==="click")return Cu(t)}function EA(e,t){if(e==="input"||e==="change")return Cu(t)}function DA(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Bt=typeof Object.is=="function"?Object.is:DA;function or(e,t){if(Bt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var l=n[a];if(!Rs.call(t,l)||!Bt(e[l],t[l]))return!1}return!0}function lm(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function im(e,t){var n=lm(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=lm(n)}}function qh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Zo(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Zo(e.document)}return t}function Cd(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var xA=Ln&&"documentMode"in document&&11>=document.documentMode,Dl=null,Bs=null,Qi=null,Ns=!1;function rm(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ns||Dl==null||Dl!==Zo(a)||(a=Dl,"selectionStart"in a&&Cd(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Qi&&or(Qi,a)||(Qi=a,a=gu(Bs,"onSelect"),0<a.length&&(t=new wu("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=Dl)))}function Na(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xl={animationend:Na("Animation","AnimationEnd"),animationiteration:Na("Animation","AnimationIteration"),animationstart:Na("Animation","AnimationStart"),transitionrun:Na("Transition","TransitionRun"),transitionstart:Na("Transition","TransitionStart"),transitioncancel:Na("Transition","TransitionCancel"),transitionend:Na("Transition","TransitionEnd")},Kc={},jh={};Ln&&(jh=document.createElement("div").style,"AnimationEvent"in window||(delete xl.animationend.animation,delete xl.animationiteration.animation,delete xl.animationstart.animation),"TransitionEvent"in window||delete xl.transitionend.transition);function Za(e){if(Kc[e])return Kc[e];if(!xl[e])return e;var t=xl[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in jh)return Kc[e]=t[n];return e}var Yh=Za("animationend"),Vh=Za("animationiteration"),Xh=Za("animationstart"),MA=Za("transitionrun"),_A=Za("transitionstart"),BA=Za("transitioncancel"),Qh=Za("transitionend"),Kh=new Map,Os="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Os.push("scrollEnd");function tn(e,t){Kh.set(e,t),Qa(t,[e])}var Wo=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},Gt=[],Ml=0,Rd=0;function Ru(){for(var e=Ml,t=Rd=Ml=0;t<e;){var n=Gt[t];Gt[t++]=null;var a=Gt[t];Gt[t++]=null;var l=Gt[t];Gt[t++]=null;var i=Gt[t];if(Gt[t++]=null,a!==null&&l!==null){var r=a.pending;r===null?l.next=l:(l.next=r.next,r.next=l),a.pending=l}i!==0&&Zh(n,l,i)}}function Tu(e,t,n,a){Gt[Ml++]=e,Gt[Ml++]=t,Gt[Ml++]=n,Gt[Ml++]=a,Rd|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function Td(e,t,n,a){return Tu(e,t,n,a),Io(e)}function Wa(e,t){return Tu(e,null,null,t),Io(e)}function Zh(e,t,n){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n);for(var l=!1,i=e.return;i!==null;)i.childLanes|=n,a=i.alternate,a!==null&&(a.childLanes|=n),i.tag===22&&(e=i.stateNode,e===null||e._visibility&1||(l=!0)),e=i,i=i.return;return e.tag===3?(i=e.stateNode,l&&t!==null&&(l=31-Mt(n),e=i.hiddenUpdates,a=e[l],a===null?e[l]=[t]:a.push(t),t.lane=n|536870912),i):null}function Io(e){if(50<nr)throw nr=0,ed=null,Error(S(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var _l={};function NA(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Tt(e,t,n,a){return new NA(e,t,n,a)}function Ed(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Nn(e,t){var n=e.alternate;return n===null?(n=Tt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function Wh(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function ko(e,t,n,a,l,i){var r=0;if(a=e,typeof e=="function")Ed(e)&&(r=1);else if(typeof e=="string")r=Lw(e,n,gn.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case As:return e=Tt(31,n,t,l),e.elementType=As,e.lanes=i,e;case Sl:return Ua(n.children,l,i,t);case hh:r=8,l|=24;break;case ys:return e=Tt(12,n,t,l|2),e.elementType=ys,e.lanes=i,e;case vs:return e=Tt(13,n,t,l),e.elementType=vs,e.lanes=i,e;case bs:return e=Tt(19,n,t,l),e.elementType=bs,e.lanes=i,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Mn:r=10;break e;case ph:r=9;break e;case fd:r=11;break e;case gd:r=14;break e;case Zn:r=16,a=null;break e}r=29,n=Error(S(130,e===null?"null":typeof e,"")),a=null}return t=Tt(r,n,t,l),t.elementType=e,t.type=a,t.lanes=i,t}function Ua(e,t,n,a){return e=Tt(7,e,a,t),e.lanes=n,e}function Zc(e,t,n){return e=Tt(6,e,null,t),e.lanes=n,e}function Ih(e){var t=Tt(18,null,null,0);return t.stateNode=e,t}function Wc(e,t,n){return t=Tt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var om=new WeakMap;function Yt(e,t){if(typeof e=="object"&&e!==null){var n=om.get(e);return n!==void 0?n:(t={value:e,source:t,stack:Fg(t)},om.set(e,t),t)}return{value:e,source:t,stack:Fg(t)}}var Bl=[],Nl=0,Jo=null,ur=0,qt=[],Ft=0,ha=null,sn=1,dn="";function Dn(e,t){Bl[Nl++]=ur,Bl[Nl++]=Jo,Jo=e,ur=t}function Jh(e,t,n){qt[Ft++]=sn,qt[Ft++]=dn,qt[Ft++]=ha,ha=e;var a=sn;e=dn;var l=32-Mt(a)-1;a&=~(1<<l),n+=1;var i=32-Mt(t)+l;if(30<i){var r=l-l%5;i=(a&(1<<r)-1).toString(32),a>>=r,l-=r,sn=1<<32-Mt(t)+l|n<<l|a,dn=i+e}else sn=1<<i|n<<l|a,dn=e}function Dd(e){e.return!==null&&(Dn(e,1),Jh(e,1,0))}function xd(e){for(;e===Jo;)Jo=Bl[--Nl],Bl[Nl]=null,ur=Bl[--Nl],Bl[Nl]=null;for(;e===ha;)ha=qt[--Ft],qt[Ft]=null,dn=qt[--Ft],qt[Ft]=null,sn=qt[--Ft],qt[Ft]=null}function $h(e,t){qt[Ft++]=sn,qt[Ft++]=dn,qt[Ft++]=ha,sn=t.id,dn=t.overflow,ha=e}var Xe=null,ye=null,V=!1,oa=null,Vt=!1,ks=Error(S(519));function pa(e){var t=Error(S(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw cr(Yt(t,e)),ks}function um(e){var t=e.stateNode,n=e.type,a=e.memoizedProps;switch(t[Ve]=e,t[vt]=a,n){case"dialog":q("cancel",t),q("close",t);break;case"iframe":case"object":case"embed":q("load",t);break;case"video":case"audio":for(n=0;n<gr.length;n++)q(gr[n],t);break;case"source":q("error",t);break;case"img":case"image":case"link":q("error",t),q("load",t);break;case"details":q("toggle",t);break;case"input":q("invalid",t),Mh(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"select":q("invalid",t);break;case"textarea":q("invalid",t),Bh(t,a.value,a.defaultValue,a.children)}n=a.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||a.suppressHydrationWarning===!0||Ly(t.textContent,n)?(a.popover!=null&&(q("beforetoggle",t),q("toggle",t)),a.onScroll!=null&&q("scroll",t),a.onScrollEnd!=null&&q("scrollend",t),a.onClick!=null&&(t.onclick=_n),t=!0):t=!1,t||pa(e,!0)}function cm(e){for(Xe=e.return;Xe;)switch(Xe.tag){case 5:case 31:case 13:Vt=!1;return;case 27:case 3:Vt=!0;return;default:Xe=Xe.return}}function vl(e){if(e!==Xe)return!1;if(!V)return cm(e),V=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||id(e.type,e.memoizedProps)),n=!n),n&&ye&&pa(e),cm(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(317));ye=Im(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(317));ye=Im(e)}else t===27?(t=ye,Aa(e.type)?(e=cd,cd=null,ye=e):ye=t):ye=Xe?Qt(e.stateNode.nextSibling):null;return!0}function Fa(){ye=Xe=null,V=!1}function Ic(){var e=oa;return e!==null&&(pt===null?pt=e:pt.push.apply(pt,e),oa=null),e}function cr(e){oa===null?oa=[e]:oa.push(e)}var Ls=mn(null),Ia=null,Bn=null;function In(e,t,n){ge(Ls,t._currentValue),t._currentValue=n}function On(e){e._currentValue=Ls.current,Fe(Ls)}function Hs(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function zs(e,t,n,a){var l=e.child;for(l!==null&&(l.return=e);l!==null;){var i=l.dependencies;if(i!==null){var r=l.child;i=i.firstContext;e:for(;i!==null;){var o=i;i=l;for(var u=0;u<t.length;u++)if(o.context===t[u]){i.lanes|=n,o=i.alternate,o!==null&&(o.lanes|=n),Hs(i.return,n,e),a||(r=null);break e}i=o.next}}else if(l.tag===18){if(r=l.return,r===null)throw Error(S(341));r.lanes|=n,i=r.alternate,i!==null&&(i.lanes|=n),Hs(r,n,e),r=null}else r=l.child;if(r!==null)r.return=l;else for(r=l;r!==null;){if(r===e){r=null;break}if(l=r.sibling,l!==null){l.return=r.return,r=l;break}r=r.return}l=r}}function ei(e,t,n,a){e=null;for(var l=t,i=!1;l!==null;){if(!i){if((l.flags&524288)!==0)i=!0;else if((l.flags&262144)!==0)break}if(l.tag===10){var r=l.alternate;if(r===null)throw Error(S(387));if(r=r.memoizedProps,r!==null){var o=l.type;Bt(l.pendingProps.value,r.value)||(e!==null?e.push(o):e=[o])}}else if(l===Vo.current){if(r=l.alternate,r===null)throw Error(S(387));r.memoizedState.memoizedState!==l.memoizedState.memoizedState&&(e!==null?e.push(hr):e=[hr])}l=l.return}e!==null&&zs(t,e,n,a),t.flags|=262144}function $o(e){for(e=e.firstContext;e!==null;){if(!Bt(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function ja(e){Ia=e,Bn=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Qe(e){return ep(Ia,e)}function Ao(e,t){return Ia===null&&ja(e),ep(e,t)}function ep(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Bn===null){if(e===null)throw Error(S(308));Bn=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Bn=Bn.next=t;return n}var OA=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},kA=Ge.unstable_scheduleCallback,LA=Ge.unstable_NormalPriority,ke={$$typeof:Mn,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Md(){return{controller:new OA,data:new Map,refCount:0}}function Rr(e){e.refCount--,e.refCount===0&&kA(LA,function(){e.controller.abort()})}var Ki=null,Us=0,Yl=0,zl=null;function HA(e,t){if(Ki===null){var n=Ki=[];Us=0,Yl=ef(),zl={status:"pending",value:void 0,then:function(a){n.push(a)}}}return Us++,t.then(sm,sm),t}function sm(){if(--Us===0&&Ki!==null){zl!==null&&(zl.status="fulfilled");var e=Ki;Ki=null,Yl=0,zl=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function zA(e,t){var n=[],a={status:"pending",value:null,reason:null,then:function(l){n.push(l)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var l=0;l<n.length;l++)(0,n[l])(t)},function(l){for(a.status="rejected",a.reason=l,l=0;l<n.length;l++)(0,n[l])(void 0)}),a}var dm=L.S;L.S=function(e,t){my=Dt(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&HA(e,t),dm!==null&&dm(e,t)};var Ga=mn(null);function _d(){var e=Ga.current;return e!==null?e:ue.pooledCache}function Lo(e,t){t===null?ge(Ga,Ga.current):ge(Ga,t.pool)}function tp(){var e=_d();return e===null?null:{parent:ke._currentValue,pool:e}}var ti=Error(S(460)),Bd=Error(S(474)),Eu=Error(S(542)),eu={then:function(){}};function fm(e){return e=e.status,e==="fulfilled"||e==="rejected"}function np(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(_n,_n),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,mm(e),e;default:if(typeof t.status=="string")t.then(_n,_n);else{if(e=ue,e!==null&&100<e.shellSuspendCounter)throw Error(S(482));e=t,e.status="pending",e.then(function(a){if(t.status==="pending"){var l=t;l.status="fulfilled",l.value=a}},function(a){if(t.status==="pending"){var l=t;l.status="rejected",l.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,mm(e),e}throw Pa=t,ti}}function La(e){try{var t=e._init;return t(e._payload)}catch(n){throw n!==null&&typeof n=="object"&&typeof n.then=="function"?(Pa=n,ti):n}}var Pa=null;function gm(){if(Pa===null)throw Error(S(459));var e=Pa;return Pa=null,e}function mm(e){if(e===ti||e===Eu)throw Error(S(483))}var Ul=null,sr=0;function wo(e){var t=sr;return sr+=1,Ul===null&&(Ul=[]),np(Ul,e,t)}function Li(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function So(e,t){throw t.$$typeof===Cb?Error(S(525)):(e=Object.prototype.toString.call(t),Error(S(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function ap(e){function t(h,g){if(e){var p=h.deletions;p===null?(h.deletions=[g],h.flags|=16):p.push(g)}}function n(h,g){if(!e)return null;for(;g!==null;)t(h,g),g=g.sibling;return null}function a(h){for(var g=new Map;h!==null;)h.key!==null?g.set(h.key,h):g.set(h.index,h),h=h.sibling;return g}function l(h,g){return h=Nn(h,g),h.index=0,h.sibling=null,h}function i(h,g,p){return h.index=p,e?(p=h.alternate,p!==null?(p=p.index,p<g?(h.flags|=67108866,g):p):(h.flags|=67108866,g)):(h.flags|=1048576,g)}function r(h){return e&&h.alternate===null&&(h.flags|=67108866),h}function o(h,g,p,y){return g===null||g.tag!==6?(g=Zc(p,h.mode,y),g.return=h,g):(g=l(g,p),g.return=h,g)}function u(h,g,p,y){var C=p.type;return C===Sl?s(h,g,p.props.children,y,p.key):g!==null&&(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Zn&&La(C)===g.type)?(g=l(g,p.props),Li(g,p),g.return=h,g):(g=ko(p.type,p.key,p.props,null,h.mode,y),Li(g,p),g.return=h,g)}function c(h,g,p,y){return g===null||g.tag!==4||g.stateNode.containerInfo!==p.containerInfo||g.stateNode.implementation!==p.implementation?(g=Wc(p,h.mode,y),g.return=h,g):(g=l(g,p.children||[]),g.return=h,g)}function s(h,g,p,y,C){return g===null||g.tag!==7?(g=Ua(p,h.mode,y,C),g.return=h,g):(g=l(g,p),g.return=h,g)}function f(h,g,p){if(typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint")return g=Zc(""+g,h.mode,p),g.return=h,g;if(typeof g=="object"&&g!==null){switch(g.$$typeof){case fo:return p=ko(g.type,g.key,g.props,null,h.mode,p),Li(p,g),p.return=h,p;case Pi:return g=Wc(g,h.mode,p),g.return=h,g;case Zn:return g=La(g),f(h,g,p)}if(qi(g)||Oi(g))return g=Ua(g,h.mode,p,null),g.return=h,g;if(typeof g.then=="function")return f(h,wo(g),p);if(g.$$typeof===Mn)return f(h,Ao(h,g),p);So(h,g)}return null}function d(h,g,p,y){var C=g!==null?g.key:null;if(typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint")return C!==null?null:o(h,g,""+p,y);if(typeof p=="object"&&p!==null){switch(p.$$typeof){case fo:return p.key===C?u(h,g,p,y):null;case Pi:return p.key===C?c(h,g,p,y):null;case Zn:return p=La(p),d(h,g,p,y)}if(qi(p)||Oi(p))return C!==null?null:s(h,g,p,y,null);if(typeof p.then=="function")return d(h,g,wo(p),y);if(p.$$typeof===Mn)return d(h,g,Ao(h,p),y);So(h,p)}return null}function m(h,g,p,y,C){if(typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint")return h=h.get(p)||null,o(g,h,""+y,C);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case fo:return h=h.get(y.key===null?p:y.key)||null,u(g,h,y,C);case Pi:return h=h.get(y.key===null?p:y.key)||null,c(g,h,y,C);case Zn:return y=La(y),m(h,g,p,y,C)}if(qi(y)||Oi(y))return h=h.get(p)||null,s(g,h,y,C,null);if(typeof y.then=="function")return m(h,g,p,wo(y),C);if(y.$$typeof===Mn)return m(h,g,p,Ao(g,y),C);So(g,y)}return null}function v(h,g,p,y){for(var C=null,R=null,T=g,M=g=0,w=null;T!==null&&M<p.length;M++){T.index>M?(w=T,T=null):w=T.sibling;var D=d(h,T,p[M],y);if(D===null){T===null&&(T=w);break}e&&T&&D.alternate===null&&t(h,T),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D,T=w}if(M===p.length)return n(h,T),V&&Dn(h,M),C;if(T===null){for(;M<p.length;M++)T=f(h,p[M],y),T!==null&&(g=i(T,g,M),R===null?C=T:R.sibling=T,R=T);return V&&Dn(h,M),C}for(T=a(T);M<p.length;M++)w=m(T,h,M,p[M],y),w!==null&&(e&&w.alternate!==null&&T.delete(w.key===null?M:w.key),g=i(w,g,M),R===null?C=w:R.sibling=w,R=w);return e&&T.forEach(function(k){return t(h,k)}),V&&Dn(h,M),C}function A(h,g,p,y){if(p==null)throw Error(S(151));for(var C=null,R=null,T=g,M=g=0,w=null,D=p.next();T!==null&&!D.done;M++,D=p.next()){T.index>M?(w=T,T=null):w=T.sibling;var k=d(h,T,D.value,y);if(k===null){T===null&&(T=w);break}e&&T&&k.alternate===null&&t(h,T),g=i(k,g,M),R===null?C=k:R.sibling=k,R=k,T=w}if(D.done)return n(h,T),V&&Dn(h,M),C;if(T===null){for(;!D.done;M++,D=p.next())D=f(h,D.value,y),D!==null&&(g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return V&&Dn(h,M),C}for(T=a(T);!D.done;M++,D=p.next())D=m(T,h,M,D.value,y),D!==null&&(e&&D.alternate!==null&&T.delete(D.key===null?M:D.key),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return e&&T.forEach(function(se){return t(h,se)}),V&&Dn(h,M),C}function b(h,g,p,y){if(typeof p=="object"&&p!==null&&p.type===Sl&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case fo:e:{for(var C=p.key;g!==null;){if(g.key===C){if(C=p.type,C===Sl){if(g.tag===7){n(h,g.sibling),y=l(g,p.props.children),y.return=h,h=y;break e}}else if(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Zn&&La(C)===g.type){n(h,g.sibling),y=l(g,p.props),Li(y,p),y.return=h,h=y;break e}n(h,g);break}else t(h,g);g=g.sibling}p.type===Sl?(y=Ua(p.props.children,h.mode,y,p.key),y.return=h,h=y):(y=ko(p.type,p.key,p.props,null,h.mode,y),Li(y,p),y.return=h,h=y)}return r(h);case Pi:e:{for(C=p.key;g!==null;){if(g.key===C)if(g.tag===4&&g.stateNode.containerInfo===p.containerInfo&&g.stateNode.implementation===p.implementation){n(h,g.sibling),y=l(g,p.children||[]),y.return=h,h=y;break e}else{n(h,g);break}else t(h,g);g=g.sibling}y=Wc(p,h.mode,y),y.return=h,h=y}return r(h);case Zn:return p=La(p),b(h,g,p,y)}if(qi(p))return v(h,g,p,y);if(Oi(p)){if(C=Oi(p),typeof C!="function")throw Error(S(150));return p=C.call(p),A(h,g,p,y)}if(typeof p.then=="function")return b(h,g,wo(p),y);if(p.$$typeof===Mn)return b(h,g,Ao(h,p),y);So(h,p)}return typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint"?(p=""+p,g!==null&&g.tag===6?(n(h,g.sibling),y=l(g,p),y.return=h,h=y):(n(h,g),y=Zc(p,h.mode,y),y.return=h,h=y),r(h)):n(h,g)}return function(h,g,p,y){try{sr=0;var C=b(h,g,p,y);return Ul=null,C}catch(T){if(T===ti||T===Eu)throw T;var R=Tt(29,T,null,h.mode);return R.lanes=y,R.return=h,R}finally{}}}var Ya=ap(!0),lp=ap(!1),Wn=!1;function Nd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Gs(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function ua(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ca(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(J&2)!==0){var l=a.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),a.pending=t,t=Io(e),Zh(e,null,n),t}return Tu(e,a,t,n),Io(e)}function Zi(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Sh(e,n)}}function Jc(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var l=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var r={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};i===null?l=i=r:i=i.next=r,n=n.next}while(n!==null);i===null?l=i=t:i=i.next=t}else l=i=t;n={baseState:a.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ps=!1;function Wi(){if(Ps){var e=zl;if(e!==null)throw e}}function Ii(e,t,n,a){Ps=!1;var l=e.updateQueue;Wn=!1;var i=l.firstBaseUpdate,r=l.lastBaseUpdate,o=l.shared.pending;if(o!==null){l.shared.pending=null;var u=o,c=u.next;u.next=null,r===null?i=c:r.next=c,r=u;var s=e.alternate;s!==null&&(s=s.updateQueue,o=s.lastBaseUpdate,o!==r&&(o===null?s.firstBaseUpdate=c:o.next=c,s.lastBaseUpdate=u))}if(i!==null){var f=l.baseState;r=0,s=c=u=null,o=i;do{var d=o.lane&-536870913,m=d!==o.lane;if(m?(Y&d)===d:(a&d)===d){d!==0&&d===Yl&&(Ps=!0),s!==null&&(s=s.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});e:{var v=e,A=o;d=t;var b=n;switch(A.tag){case 1:if(v=A.payload,typeof v=="function"){f=v.call(b,f,d);break e}f=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=A.payload,d=typeof v=="function"?v.call(b,f,d):v,d==null)break e;f=ve({},f,d);break e;case 2:Wn=!0}}d=o.callback,d!==null&&(e.flags|=64,m&&(e.flags|=8192),m=l.callbacks,m===null?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:o.tag,payload:o.payload,callback:o.callback,next:null},s===null?(c=s=m,u=f):s=s.next=m,r|=d;if(o=o.next,o===null){if(o=l.shared.pending,o===null)break;m=o,o=m.next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}while(!0);s===null&&(u=f),l.baseState=u,l.firstBaseUpdate=c,l.lastBaseUpdate=s,i===null&&(l.shared.lanes=0),va|=r,e.lanes=r,e.memoizedState=f}}function ip(e,t){if(typeof e!="function")throw Error(S(191,e));e.call(t)}function rp(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)ip(n[e],t)}var Vl=mn(null),tu=mn(0);function hm(e,t){e=Gn,ge(tu,e),ge(Vl,t),Gn=e|t.baseLanes}function qs(){ge(tu,Gn),ge(Vl,Vl.current)}function Od(){Gn=tu.current,Fe(Vl),Fe(tu)}var Nt=mn(null),Xt=null;function Jn(e){var t=e.alternate;ge(xe,xe.current&1),ge(Nt,e),Xt===null&&(t===null||Vl.current!==null||t.memoizedState!==null)&&(Xt=e)}function Fs(e){ge(xe,xe.current),ge(Nt,e),Xt===null&&(Xt=e)}function op(e){e.tag===22?(ge(xe,xe.current),ge(Nt,e),Xt===null&&(Xt=e)):$n(e)}function $n(){ge(xe,xe.current),ge(Nt,Nt.current)}function Rt(e){Fe(Nt),Xt===e&&(Xt=null),Fe(xe)}var xe=mn(0);function nu(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||od(n)||ud(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Hn=0,G=null,re=null,Ne=null,au=!1,Gl=!1,Va=!1,lu=0,dr=0,Pl=null,UA=0;function Re(){throw Error(S(321))}function kd(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Bt(e[n],t[n]))return!1;return!0}function Ld(e,t,n,a,l,i){return Hn=i,G=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,L.H=e===null||e.memoizedState===null?Up:Xd,Va=!1,i=n(a,l),Va=!1,Gl&&(i=cp(t,n,a,l)),up(e),i}function up(e){L.H=fr;var t=re!==null&&re.next!==null;if(Hn=0,Ne=re=G=null,au=!1,dr=0,Pl=null,t)throw Error(S(300));e===null||Le||(e=e.dependencies,e!==null&&$o(e)&&(Le=!0))}function cp(e,t,n,a){G=e;var l=0;do{if(Gl&&(Pl=null),dr=0,Gl=!1,25<=l)throw Error(S(301));if(l+=1,Ne=re=null,e.updateQueue!=null){var i=e.updateQueue;i.lastEffect=null,i.events=null,i.stores=null,i.memoCache!=null&&(i.memoCache.index=0)}L.H=Gp,i=t(n,a)}while(Gl);return i}function GA(){var e=L.H,t=e.useState()[0];return t=typeof t.then=="function"?Tr(t):t,e=e.useState()[0],(re!==null?re.memoizedState:null)!==e&&(G.flags|=1024),t}function Hd(){var e=lu!==0;return lu=0,e}function zd(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Ud(e){if(au){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}au=!1}Hn=0,Ne=re=G=null,Gl=!1,dr=lu=0,Pl=null}function ut(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ne===null?G.memoizedState=Ne=e:Ne=Ne.next=e,Ne}function Me(){if(re===null){var e=G.alternate;e=e!==null?e.memoizedState:null}else e=re.next;var t=Ne===null?G.memoizedState:Ne.next;if(t!==null)Ne=t,re=e;else{if(e===null)throw G.alternate===null?Error(S(467)):Error(S(310));re=e,e={memoizedState:re.memoizedState,baseState:re.baseState,baseQueue:re.baseQueue,queue:re.queue,next:null},Ne===null?G.memoizedState=Ne=e:Ne=Ne.next=e}return Ne}function Du(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Tr(e){var t=dr;return dr+=1,Pl===null&&(Pl=[]),e=np(Pl,e,t),t=G,(Ne===null?t.memoizedState:Ne.next)===null&&(t=t.alternate,L.H=t===null||t.memoizedState===null?Up:Xd),e}function xu(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Tr(e);if(e.$$typeof===Mn)return Qe(e)}throw Error(S(438,String(e)))}function Gd(e){var t=null,n=G.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var a=G.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(l){return l.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=Du(),G.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),a=0;a<e;a++)n[a]=Rb;return t.index++,n}function zn(e,t){return typeof t=="function"?t(e):t}function Ho(e){var t=Me();return Pd(t,re,e)}function Pd(e,t,n){var a=e.queue;if(a===null)throw Error(S(311));a.lastRenderedReducer=n;var l=e.baseQueue,i=a.pending;if(i!==null){if(l!==null){var r=l.next;l.next=i.next,i.next=r}t.baseQueue=l=i,a.pending=null}if(i=e.baseState,l===null)e.memoizedState=i;else{t=l.next;var o=r=null,u=null,c=t,s=!1;do{var f=c.lane&-536870913;if(f!==c.lane?(Y&f)===f:(Hn&f)===f){var d=c.revertLane;if(d===0)u!==null&&(u=u.next={lane:0,revertLane:0,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),f===Yl&&(s=!0);else if((Hn&d)===d){c=c.next,d===Yl&&(s=!0);continue}else f={lane:0,revertLane:c.revertLane,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=f,r=i):u=u.next=f,G.lanes|=d,va|=d;f=c.action,Va&&n(i,f),i=c.hasEagerState?c.eagerState:n(i,f)}else d={lane:f,revertLane:c.revertLane,gesture:c.gesture,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=d,r=i):u=u.next=d,G.lanes|=f,va|=f;c=c.next}while(c!==null&&c!==t);if(u===null?r=i:u.next=o,!Bt(i,e.memoizedState)&&(Le=!0,s&&(n=zl,n!==null)))throw n;e.memoizedState=i,e.baseState=r,e.baseQueue=u,a.lastRenderedState=i}return l===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function $c(e){var t=Me(),n=t.queue;if(n===null)throw Error(S(311));n.lastRenderedReducer=e;var a=n.dispatch,l=n.pending,i=t.memoizedState;if(l!==null){n.pending=null;var r=l=l.next;do i=e(i,r.action),r=r.next;while(r!==l);Bt(i,t.memoizedState)||(Le=!0),t.memoizedState=i,t.baseQueue===null&&(t.baseState=i),n.lastRenderedState=i}return[i,a]}function sp(e,t,n){var a=G,l=Me(),i=V;if(i){if(n===void 0)throw Error(S(407));n=n()}else n=t();var r=!Bt((re||l).memoizedState,n);if(r&&(l.memoizedState=n,Le=!0),l=l.queue,qd(gp.bind(null,a,l,e),[e]),l.getSnapshot!==t||r||Ne!==null&&Ne.memoizedState.tag&1){if(a.flags|=2048,Xl(9,{destroy:void 0},fp.bind(null,a,l,n,t),null),ue===null)throw Error(S(349));i||(Hn&127)!==0||dp(a,t,n)}return n}function dp(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=G.updateQueue,t===null?(t=Du(),G.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function fp(e,t,n,a){t.value=n,t.getSnapshot=a,mp(t)&&hp(e)}function gp(e,t,n){return n(function(){mp(t)&&hp(e)})}function mp(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Bt(e,n)}catch{return!0}}function hp(e){var t=Wa(e,2);t!==null&&yt(t,e,2)}function js(e){var t=ut();if(typeof e=="function"){var n=e;if(e=n(),Va){ta(!0);try{n()}finally{ta(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:e},t}function pp(e,t,n,a){return e.baseState=n,Pd(e,re,typeof a=="function"?a:zn)}function PA(e,t,n,a,l){if(_u(e))throw Error(S(485));if(e=t.action,e!==null){var i={payload:l,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(r){i.listeners.push(r)}};L.T!==null?n(!0):i.isTransition=!1,a(i),n=t.pending,n===null?(i.next=t.pending=i,yp(t,i)):(i.next=n.next,t.pending=n.next=i)}}function yp(e,t){var n=t.action,a=t.payload,l=e.state;if(t.isTransition){var i=L.T,r={};L.T=r;try{var o=n(l,a),u=L.S;u!==null&&u(r,o),pm(e,t,o)}catch(c){Ys(e,t,c)}finally{i!==null&&r.types!==null&&(i.types=r.types),L.T=i}}else try{i=n(l,a),pm(e,t,i)}catch(c){Ys(e,t,c)}}function pm(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?n.then(function(a){ym(e,t,a)},function(a){return Ys(e,t,a)}):ym(e,t,n)}function ym(e,t,n){t.status="fulfilled",t.value=n,vp(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,yp(e,n)))}function Ys(e,t,n){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=n,vp(t),t=t.next;while(t!==a)}e.action=null}function vp(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function bp(e,t){return t}function vm(e,t){if(V){var n=ue.formState;if(n!==null){e:{var a=G;if(V){if(ye){t:{for(var l=ye,i=Vt;l.nodeType!==8;){if(!i){l=null;break t}if(l=Qt(l.nextSibling),l===null){l=null;break t}}i=l.data,l=i==="F!"||i==="F"?l:null}if(l){ye=Qt(l.nextSibling),a=l.data==="F!";break e}}pa(a)}a=!1}a&&(t=n[0])}}return n=ut(),n.memoizedState=n.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:bp,lastRenderedState:t},n.queue=a,n=Lp.bind(null,G,a),a.dispatch=n,a=js(!1),i=Vd.bind(null,G,!1,a.queue),a=ut(),l={state:t,dispatch:null,action:e,pending:null},a.queue=l,n=PA.bind(null,G,l,i,n),l.dispatch=n,a.memoizedState=e,[t,n,!1]}function bm(e){var t=Me();return Ap(t,re,e)}function Ap(e,t,n){if(t=Pd(e,t,bp)[0],e=Ho(zn)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=Tr(t)}catch(r){throw r===ti?Eu:r}else a=t;t=Me();var l=t.queue,i=l.dispatch;return n!==t.memoizedState&&(G.flags|=2048,Xl(9,{destroy:void 0},qA.bind(null,l,n),null)),[a,i,e]}function qA(e,t){e.action=t}function Am(e){var t=Me(),n=re;if(n!==null)return Ap(t,n,e);Me(),t=t.memoizedState,n=Me();var a=n.queue.dispatch;return n.memoizedState=e,[t,a,!1]}function Xl(e,t,n,a){return e={tag:e,create:n,deps:a,inst:t,next:null},t=G.updateQueue,t===null&&(t=Du(),G.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function wp(){return Me().memoizedState}function zo(e,t,n,a){var l=ut();G.flags|=e,l.memoizedState=Xl(1|t,{destroy:void 0},n,a===void 0?null:a)}function Mu(e,t,n,a){var l=Me();a=a===void 0?null:a;var i=l.memoizedState.inst;re!==null&&a!==null&&kd(a,re.memoizedState.deps)?l.memoizedState=Xl(t,i,n,a):(G.flags|=e,l.memoizedState=Xl(1|t,i,n,a))}function wm(e,t){zo(8390656,8,e,t)}function qd(e,t){Mu(2048,8,e,t)}function FA(e){G.flags|=4;var t=G.updateQueue;if(t===null)t=Du(),G.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function Sp(e){var t=Me().memoizedState;return FA({ref:t,nextImpl:e}),function(){if((J&2)!==0)throw Error(S(440));return t.impl.apply(void 0,arguments)}}function Cp(e,t){return Mu(4,2,e,t)}function Rp(e,t){return Mu(4,4,e,t)}function Tp(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Ep(e,t,n){n=n!=null?n.concat([e]):null,Mu(4,4,Tp.bind(null,t,e),n)}function Fd(){}function Dp(e,t){var n=Me();t=t===void 0?null:t;var a=n.memoizedState;return t!==null&&kd(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function xp(e,t){var n=Me();t=t===void 0?null:t;var a=n.memoizedState;if(t!==null&&kd(t,a[1]))return a[0];if(a=e(),Va){ta(!0);try{e()}finally{ta(!1)}}return n.memoizedState=[a,t],a}function jd(e,t,n){return n===void 0||(Hn&1073741824)!==0&&(Y&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=py(),G.lanes|=e,va|=e,n)}function Mp(e,t,n,a){return Bt(n,t)?n:Vl.current!==null?(e=jd(e,n,a),Bt(e,t)||(Le=!0),e):(Hn&42)===0||(Hn&1073741824)!==0&&(Y&261930)===0?(Le=!0,e.memoizedState=n):(e=py(),G.lanes|=e,va|=e,t)}function _p(e,t,n,a,l){var i=$.p;$.p=i!==0&&8>i?i:8;var r=L.T,o={};L.T=o,Vd(e,!1,t,n);try{var u=l(),c=L.S;if(c!==null&&c(o,u),u!==null&&typeof u=="object"&&typeof u.then=="function"){var s=zA(u,a);Ji(e,t,s,_t(e))}else Ji(e,t,a,_t(e))}catch(f){Ji(e,t,{then:function(){},status:"rejected",reason:f},_t())}finally{$.p=i,r!==null&&o.types!==null&&(r.types=o.types),L.T=r}}function jA(){}function Vs(e,t,n,a){if(e.tag!==5)throw Error(S(476));var l=Bp(e).queue;_p(e,l,t,za,n===null?jA:function(){return Np(e),n(a)})}function Bp(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:za,baseState:za,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:za},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Np(e){var t=Bp(e);t.next===null&&(t=e.alternate.memoizedState),Ji(e,t.next.queue,{},_t())}function Yd(){return Qe(hr)}function Op(){return Me().memoizedState}function kp(){return Me().memoizedState}function YA(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=_t();e=ua(n);var a=ca(t,e,n);a!==null&&(yt(a,t,n),Zi(a,t,n)),t={cache:Md()},e.payload=t;return}t=t.return}}function VA(e,t,n){var a=_t();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},_u(e)?Hp(t,n):(n=Td(e,t,n,a),n!==null&&(yt(n,e,a),zp(n,t,a)))}function Lp(e,t,n){var a=_t();Ji(e,t,n,a)}function Ji(e,t,n,a){var l={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(_u(e))Hp(t,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var r=t.lastRenderedState,o=i(r,n);if(l.hasEagerState=!0,l.eagerState=o,Bt(o,r))return Tu(e,t,l,0),ue===null&&Ru(),!1}catch{}finally{}if(n=Td(e,t,l,a),n!==null)return yt(n,e,a),zp(n,t,a),!0}return!1}function Vd(e,t,n,a){if(a={lane:2,revertLane:ef(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},_u(e)){if(t)throw Error(S(479))}else t=Td(e,n,a,2),t!==null&&yt(t,e,2)}function _u(e){var t=e.alternate;return e===G||t!==null&&t===G}function Hp(e,t){Gl=au=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function zp(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Sh(e,n)}}var fr={readContext:Qe,use:xu,useCallback:Re,useContext:Re,useEffect:Re,useImperativeHandle:Re,useLayoutEffect:Re,useInsertionEffect:Re,useMemo:Re,useReducer:Re,useRef:Re,useState:Re,useDebugValue:Re,useDeferredValue:Re,useTransition:Re,useSyncExternalStore:Re,useId:Re,useHostTransitionStatus:Re,useFormState:Re,useActionState:Re,useOptimistic:Re,useMemoCache:Re,useCacheRefresh:Re};fr.useEffectEvent=Re;var Up={readContext:Qe,use:xu,useCallback:function(e,t){return ut().memoizedState=[e,t===void 0?null:t],e},useContext:Qe,useEffect:wm,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,zo(4194308,4,Tp.bind(null,t,e),n)},useLayoutEffect:function(e,t){return zo(4194308,4,e,t)},useInsertionEffect:function(e,t){zo(4,2,e,t)},useMemo:function(e,t){var n=ut();t=t===void 0?null:t;var a=e();if(Va){ta(!0);try{e()}finally{ta(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=ut();if(n!==void 0){var l=n(t);if(Va){ta(!0);try{n(t)}finally{ta(!1)}}}else l=t;return a.memoizedState=a.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},a.queue=e,e=e.dispatch=VA.bind(null,G,e),[a.memoizedState,e]},useRef:function(e){var t=ut();return e={current:e},t.memoizedState=e},useState:function(e){e=js(e);var t=e.queue,n=Lp.bind(null,G,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Fd,useDeferredValue:function(e,t){var n=ut();return jd(n,e,t)},useTransition:function(){var e=js(!1);return e=_p.bind(null,G,e.queue,!0,!1),ut().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=G,l=ut();if(V){if(n===void 0)throw Error(S(407));n=n()}else{if(n=t(),ue===null)throw Error(S(349));(Y&127)!==0||dp(a,t,n)}l.memoizedState=n;var i={value:n,getSnapshot:t};return l.queue=i,wm(gp.bind(null,a,i,e),[e]),a.flags|=2048,Xl(9,{destroy:void 0},fp.bind(null,a,i,n,t),null),n},useId:function(){var e=ut(),t=ue.identifierPrefix;if(V){var n=dn,a=sn;n=(a&~(1<<32-Mt(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=lu++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=UA++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:Yd,useFormState:vm,useActionState:vm,useOptimistic:function(e){var t=ut();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Vd.bind(null,G,!0,n),n.dispatch=t,[e,t]},useMemoCache:Gd,useCacheRefresh:function(){return ut().memoizedState=YA.bind(null,G)},useEffectEvent:function(e){var t=ut(),n={impl:e};return t.memoizedState=n,function(){if((J&2)!==0)throw Error(S(440));return n.impl.apply(void 0,arguments)}}},Xd={readContext:Qe,use:xu,useCallback:Dp,useContext:Qe,useEffect:qd,useImperativeHandle:Ep,useInsertionEffect:Cp,useLayoutEffect:Rp,useMemo:xp,useReducer:Ho,useRef:wp,useState:function(){return Ho(zn)},useDebugValue:Fd,useDeferredValue:function(e,t){var n=Me();return Mp(n,re.memoizedState,e,t)},useTransition:function(){var e=Ho(zn)[0],t=Me().memoizedState;return[typeof e=="boolean"?e:Tr(e),t]},useSyncExternalStore:sp,useId:Op,useHostTransitionStatus:Yd,useFormState:bm,useActionState:bm,useOptimistic:function(e,t){var n=Me();return pp(n,re,e,t)},useMemoCache:Gd,useCacheRefresh:kp};Xd.useEffectEvent=Sp;var Gp={readContext:Qe,use:xu,useCallback:Dp,useContext:Qe,useEffect:qd,useImperativeHandle:Ep,useInsertionEffect:Cp,useLayoutEffect:Rp,useMemo:xp,useReducer:$c,useRef:wp,useState:function(){return $c(zn)},useDebugValue:Fd,useDeferredValue:function(e,t){var n=Me();return re===null?jd(n,e,t):Mp(n,re.memoizedState,e,t)},useTransition:function(){var e=$c(zn)[0],t=Me().memoizedState;return[typeof e=="boolean"?e:Tr(e),t]},useSyncExternalStore:sp,useId:Op,useHostTransitionStatus:Yd,useFormState:Am,useActionState:Am,useOptimistic:function(e,t){var n=Me();return re!==null?pp(n,re,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:Gd,useCacheRefresh:kp};Gp.useEffectEvent=Sp;function es(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:ve({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Xs={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=_t(),l=ua(a);l.payload=t,n!=null&&(l.callback=n),t=ca(e,l,a),t!==null&&(yt(t,e,a),Zi(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=_t(),l=ua(a);l.tag=1,l.payload=t,n!=null&&(l.callback=n),t=ca(e,l,a),t!==null&&(yt(t,e,a),Zi(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=_t(),a=ua(n);a.tag=2,t!=null&&(a.callback=t),t=ca(e,a,n),t!==null&&(yt(t,e,n),Zi(t,e,n))}};function Sm(e,t,n,a,l,i,r){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,i,r):t.prototype&&t.prototype.isPureReactComponent?!or(n,a)||!or(l,i):!0}function Cm(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&Xs.enqueueReplaceState(t,t.state,null)}function Xa(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=ve({},n));for(var l in e)n[l]===void 0&&(n[l]=e[l])}return n}function Pp(e){Wo(e)}function qp(e){console.error(e)}function Fp(e){Wo(e)}function iu(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function Rm(e,t,n){try{var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(l){setTimeout(function(){throw l})}}function Qs(e,t,n){return n=ua(n),n.tag=3,n.payload={element:null},n.callback=function(){iu(e,t)},n}function jp(e){return e=ua(e),e.tag=3,e}function Yp(e,t,n,a){var l=n.type.getDerivedStateFromError;if(typeof l=="function"){var i=a.value;e.payload=function(){return l(i)},e.callback=function(){Rm(t,n,a)}}var r=n.stateNode;r!==null&&typeof r.componentDidCatch=="function"&&(e.callback=function(){Rm(t,n,a),typeof l!="function"&&(sa===null?sa=new Set([this]):sa.add(this));var o=a.stack;this.componentDidCatch(a.value,{componentStack:o!==null?o:""})})}function XA(e,t,n,a,l){if(n.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&ei(t,n,l,!0),n=Nt.current,n!==null){switch(n.tag){case 31:case 13:return Xt===null?su():n.alternate===null&&Te===0&&(Te=3),n.flags&=-257,n.flags|=65536,n.lanes=l,a===eu?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),ds(e,a,l)),!1;case 22:return n.flags|=65536,a===eu?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),ds(e,a,l)),!1}throw Error(S(435,n.tag))}return ds(e,a,l),su(),!1}if(V)return t=Nt.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=l,a!==ks&&(e=Error(S(422),{cause:a}),cr(Yt(e,n)))):(a!==ks&&(t=Error(S(423),{cause:a}),cr(Yt(t,n))),e=e.current.alternate,e.flags|=65536,l&=-l,e.lanes|=l,a=Yt(a,n),l=Qs(e.stateNode,a,l),Jc(e,l),Te!==4&&(Te=2)),!1;var i=Error(S(520),{cause:a});if(i=Yt(i,n),tr===null?tr=[i]:tr.push(i),Te!==4&&(Te=2),t===null)return!0;a=Yt(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=l&-l,n.lanes|=e,e=Qs(n.stateNode,a,e),Jc(n,e),!1;case 1:if(t=n.type,i=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||i!==null&&typeof i.componentDidCatch=="function"&&(sa===null||!sa.has(i))))return n.flags|=65536,l&=-l,n.lanes|=l,l=jp(l),Yp(l,e,n,a),Jc(n,l),!1}n=n.return}while(n!==null);return!1}var Qd=Error(S(461)),Le=!1;function Ye(e,t,n,a){t.child=e===null?lp(t,null,n,a):Ya(t,e.child,n,a)}function Tm(e,t,n,a,l){n=n.render;var i=t.ref;if("ref"in a){var r={};for(var o in a)o!=="ref"&&(r[o]=a[o])}else r=a;return ja(t),a=Ld(e,t,n,r,i,l),o=Hd(),e!==null&&!Le?(zd(e,t,l),Un(e,t,l)):(V&&o&&Dd(t),t.flags|=1,Ye(e,t,a,l),t.child)}function Em(e,t,n,a,l){if(e===null){var i=n.type;return typeof i=="function"&&!Ed(i)&&i.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=i,Vp(e,t,i,a,l)):(e=ko(n.type,null,a,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!Kd(e,l)){var r=i.memoizedProps;if(n=n.compare,n=n!==null?n:or,n(r,a)&&e.ref===t.ref)return Un(e,t,l)}return t.flags|=1,e=Nn(i,a),e.ref=t.ref,e.return=t,t.child=e}function Vp(e,t,n,a,l){if(e!==null){var i=e.memoizedProps;if(or(i,a)&&e.ref===t.ref)if(Le=!1,t.pendingProps=a=i,Kd(e,l))(e.flags&131072)!==0&&(Le=!0);else return t.lanes=e.lanes,Un(e,t,l)}return Ks(e,t,n,a,l)}function Xp(e,t,n,a){var l=a.children,i=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((t.flags&128)!==0){if(i=i!==null?i.baseLanes|n:n,e!==null){for(a=t.child=e.child,l=0;a!==null;)l=l|a.lanes|a.childLanes,a=a.sibling;a=l&~i}else a=0,t.child=null;return Dm(e,t,i,n,a)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Lo(t,i!==null?i.cachePool:null),i!==null?hm(t,i):qs(),op(t);else return a=t.lanes=536870912,Dm(e,t,i!==null?i.baseLanes|n:n,n,a)}else i!==null?(Lo(t,i.cachePool),hm(t,i),$n(t),t.memoizedState=null):(e!==null&&Lo(t,null),qs(),$n(t));return Ye(e,t,l,n),t.child}function ji(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Dm(e,t,n,a,l){var i=_d();return i=i===null?null:{parent:ke._currentValue,pool:i},t.memoizedState={baseLanes:n,cachePool:i},e!==null&&Lo(t,null),qs(),op(t),e!==null&&ei(e,t,a,!0),t.childLanes=l,null}function Uo(e,t){return t=ru({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function xm(e,t,n){return Ya(t,e.child,null,n),e=Uo(t,t.pendingProps),e.flags|=2,Rt(t),t.memoizedState=null,e}function QA(e,t,n){var a=t.pendingProps,l=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(V){if(a.mode==="hidden")return e=Uo(t,a),t.lanes=536870912,ji(null,e);if(Fs(t),(e=ye)?(e=Uy(e,Vt),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:ha!==null?{id:sn,overflow:dn}:null,retryLane:536870912,hydrationErrors:null},n=Ih(e),n.return=t,t.child=n,Xe=t,ye=null)):e=null,e===null)throw pa(t);return t.lanes=536870912,null}return Uo(t,a)}var i=e.memoizedState;if(i!==null){var r=i.dehydrated;if(Fs(t),l)if(t.flags&256)t.flags&=-257,t=xm(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(S(558));else if(Le||ei(e,t,n,!1),l=(n&e.childLanes)!==0,Le||l){if(a=ue,a!==null&&(r=Ch(a,n),r!==0&&r!==i.retryLane))throw i.retryLane=r,Wa(e,r),yt(a,e,r),Qd;su(),t=xm(e,t,n)}else e=i.treeContext,ye=Qt(r.nextSibling),Xe=t,V=!0,oa=null,Vt=!1,e!==null&&$h(t,e),t=Uo(t,a),t.flags|=4096;return t}return e=Nn(e.child,{mode:a.mode,children:a.children}),e.ref=t.ref,t.child=e,e.return=t,e}function Go(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(S(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Ks(e,t,n,a,l){return ja(t),n=Ld(e,t,n,a,void 0,l),a=Hd(),e!==null&&!Le?(zd(e,t,l),Un(e,t,l)):(V&&a&&Dd(t),t.flags|=1,Ye(e,t,n,l),t.child)}function Mm(e,t,n,a,l,i){return ja(t),t.updateQueue=null,n=cp(t,a,n,l),up(e),a=Hd(),e!==null&&!Le?(zd(e,t,i),Un(e,t,i)):(V&&a&&Dd(t),t.flags|=1,Ye(e,t,n,i),t.child)}function _m(e,t,n,a,l){if(ja(t),t.stateNode===null){var i=_l,r=n.contextType;typeof r=="object"&&r!==null&&(i=Qe(r)),i=new n(a,i),t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,i.updater=Xs,t.stateNode=i,i._reactInternals=t,i=t.stateNode,i.props=a,i.state=t.memoizedState,i.refs={},Nd(t),r=n.contextType,i.context=typeof r=="object"&&r!==null?Qe(r):_l,i.state=t.memoizedState,r=n.getDerivedStateFromProps,typeof r=="function"&&(es(t,n,r,a),i.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof i.getSnapshotBeforeUpdate=="function"||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(r=i.state,typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount(),r!==i.state&&Xs.enqueueReplaceState(i,i.state,null),Ii(t,a,i,l),Wi(),i.state=t.memoizedState),typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){i=t.stateNode;var o=t.memoizedProps,u=Xa(n,o);i.props=u;var c=i.context,s=n.contextType;r=_l,typeof s=="object"&&s!==null&&(r=Qe(s));var f=n.getDerivedStateFromProps;s=typeof f=="function"||typeof i.getSnapshotBeforeUpdate=="function",o=t.pendingProps!==o,s||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(o||c!==r)&&Cm(t,i,a,r),Wn=!1;var d=t.memoizedState;i.state=d,Ii(t,a,i,l),Wi(),c=t.memoizedState,o||d!==c||Wn?(typeof f=="function"&&(es(t,n,f,a),c=t.memoizedState),(u=Wn||Sm(t,n,u,a,d,c,r))?(s||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=c),i.props=a,i.state=c,i.context=r,a=u):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{i=t.stateNode,Gs(e,t),r=t.memoizedProps,s=Xa(n,r),i.props=s,f=t.pendingProps,d=i.context,c=n.contextType,u=_l,typeof c=="object"&&c!==null&&(u=Qe(c)),o=n.getDerivedStateFromProps,(c=typeof o=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(r!==f||d!==u)&&Cm(t,i,a,u),Wn=!1,d=t.memoizedState,i.state=d,Ii(t,a,i,l),Wi();var m=t.memoizedState;r!==f||d!==m||Wn||e!==null&&e.dependencies!==null&&$o(e.dependencies)?(typeof o=="function"&&(es(t,n,o,a),m=t.memoizedState),(s=Wn||Sm(t,n,s,a,d,m,u)||e!==null&&e.dependencies!==null&&$o(e.dependencies))?(c||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(a,m,u),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(a,m,u)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=m),i.props=a,i.state=m,i.context=u,a=s):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),a=!1)}return i=a,Go(e,t),a=(t.flags&128)!==0,i||a?(i=t.stateNode,n=a&&typeof n.getDerivedStateFromError!="function"?null:i.render(),t.flags|=1,e!==null&&a?(t.child=Ya(t,e.child,null,l),t.child=Ya(t,null,n,l)):Ye(e,t,n,l),t.memoizedState=i.state,e=t.child):e=Un(e,t,l),e}function Bm(e,t,n,a){return Fa(),t.flags|=256,Ye(e,t,n,a),t.child}var ts={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ns(e){return{baseLanes:e,cachePool:tp()}}function as(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Et),e}function Qp(e,t,n){var a=t.pendingProps,l=!1,i=(t.flags&128)!==0,r;if((r=i)||(r=e!==null&&e.memoizedState===null?!1:(xe.current&2)!==0),r&&(l=!0,t.flags&=-129),r=(t.flags&32)!==0,t.flags&=-33,e===null){if(V){if(l?Jn(t):$n(t),(e=ye)?(e=Uy(e,Vt),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:ha!==null?{id:sn,overflow:dn}:null,retryLane:536870912,hydrationErrors:null},n=Ih(e),n.return=t,t.child=n,Xe=t,ye=null)):e=null,e===null)throw pa(t);return ud(e)?t.lanes=32:t.lanes=536870912,null}var o=a.children;return a=a.fallback,l?($n(t),l=t.mode,o=ru({mode:"hidden",children:o},l),a=Ua(a,l,n,null),o.return=t,a.return=t,o.sibling=a,t.child=o,a=t.child,a.memoizedState=ns(n),a.childLanes=as(e,r,n),t.memoizedState=ts,ji(null,a)):(Jn(t),Zs(t,o))}var u=e.memoizedState;if(u!==null&&(o=u.dehydrated,o!==null)){if(i)t.flags&256?(Jn(t),t.flags&=-257,t=ls(e,t,n)):t.memoizedState!==null?($n(t),t.child=e.child,t.flags|=128,t=null):($n(t),o=a.fallback,l=t.mode,a=ru({mode:"visible",children:a.children},l),o=Ua(o,l,n,null),o.flags|=2,a.return=t,o.return=t,a.sibling=o,t.child=a,Ya(t,e.child,null,n),a=t.child,a.memoizedState=ns(n),a.childLanes=as(e,r,n),t.memoizedState=ts,t=ji(null,a));else if(Jn(t),ud(o)){if(r=o.nextSibling&&o.nextSibling.dataset,r)var c=r.dgst;r=c,a=Error(S(419)),a.stack="",a.digest=r,cr({value:a,source:null,stack:null}),t=ls(e,t,n)}else if(Le||ei(e,t,n,!1),r=(n&e.childLanes)!==0,Le||r){if(r=ue,r!==null&&(a=Ch(r,n),a!==0&&a!==u.retryLane))throw u.retryLane=a,Wa(e,a),yt(r,e,a),Qd;od(o)||su(),t=ls(e,t,n)}else od(o)?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,ye=Qt(o.nextSibling),Xe=t,V=!0,oa=null,Vt=!1,e!==null&&$h(t,e),t=Zs(t,a.children),t.flags|=4096);return t}return l?($n(t),o=a.fallback,l=t.mode,u=e.child,c=u.sibling,a=Nn(u,{mode:"hidden",children:a.children}),a.subtreeFlags=u.subtreeFlags&65011712,c!==null?o=Nn(c,o):(o=Ua(o,l,n,null),o.flags|=2),o.return=t,a.return=t,a.sibling=o,t.child=a,ji(null,a),a=t.child,o=e.child.memoizedState,o===null?o=ns(n):(l=o.cachePool,l!==null?(u=ke._currentValue,l=l.parent!==u?{parent:u,pool:u}:l):l=tp(),o={baseLanes:o.baseLanes|n,cachePool:l}),a.memoizedState=o,a.childLanes=as(e,r,n),t.memoizedState=ts,ji(e.child,a)):(Jn(t),n=e.child,e=n.sibling,n=Nn(n,{mode:"visible",children:a.children}),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Zs(e,t){return t=ru({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function ru(e,t){return e=Tt(22,e,null,t),e.lanes=0,e}function ls(e,t,n){return Ya(t,e.child,null,n),e=Zs(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Nm(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),Hs(e.return,t,n)}function is(e,t,n,a,l,i){var r=e.memoizedState;r===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:l,treeForkCount:i}:(r.isBackwards=t,r.rendering=null,r.renderingStartTime=0,r.last=a,r.tail=n,r.tailMode=l,r.treeForkCount=i)}function Kp(e,t,n){var a=t.pendingProps,l=a.revealOrder,i=a.tail;a=a.children;var r=xe.current,o=(r&2)!==0;if(o?(r=r&1|2,t.flags|=128):r&=1,ge(xe,r),Ye(e,t,a,n),a=V?ur:0,!o&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Nm(e,n,t);else if(e.tag===19)Nm(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&nu(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),is(t,!1,l,n,i,a);break;case"backwards":case"unstable_legacy-backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&nu(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}is(t,!0,n,null,i,a);break;case"together":is(t,!1,null,null,void 0,a);break;default:t.memoizedState=null}return t.child}function Un(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),va|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(ei(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(S(153));if(t.child!==null){for(e=t.child,n=Nn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Nn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Kd(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&$o(e)))}function KA(e,t,n){switch(t.tag){case 3:Xo(t,t.stateNode.containerInfo),In(t,ke,e.memoizedState.cache),Fa();break;case 27:case 5:Cs(t);break;case 4:Xo(t,t.stateNode.containerInfo);break;case 10:In(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Fs(t),null;break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Jn(t),t.flags|=128,null):(n&t.child.childLanes)!==0?Qp(e,t,n):(Jn(t),e=Un(e,t,n),e!==null?e.sibling:null);Jn(t);break;case 19:var l=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||(ei(e,t,n,!1),a=(n&t.childLanes)!==0),l){if(a)return Kp(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),ge(xe,xe.current),a)break;return null;case 22:return t.lanes=0,Xp(e,t,n,t.pendingProps);case 24:In(t,ke,e.memoizedState.cache)}return Un(e,t,n)}function Zp(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)Le=!0;else{if(!Kd(e,n)&&(t.flags&128)===0)return Le=!1,KA(e,t,n);Le=(e.flags&131072)!==0}else Le=!1,V&&(t.flags&1048576)!==0&&Jh(t,ur,t.index);switch(t.lanes=0,t.tag){case 16:e:{var a=t.pendingProps;if(e=La(t.elementType),t.type=e,typeof e=="function")Ed(e)?(a=Xa(e,a),t.tag=1,t=_m(null,t,e,a,n)):(t.tag=0,t=Ks(null,t,e,a,n));else{if(e!=null){var l=e.$$typeof;if(l===fd){t.tag=11,t=Tm(null,t,e,a,n);break e}else if(l===gd){t.tag=14,t=Em(null,t,e,a,n);break e}}throw t=ws(e)||e,Error(S(306,t,""))}}return t;case 0:return Ks(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,l=Xa(a,t.pendingProps),_m(e,t,a,l,n);case 3:e:{if(Xo(t,t.stateNode.containerInfo),e===null)throw Error(S(387));a=t.pendingProps;var i=t.memoizedState;l=i.element,Gs(e,t),Ii(t,a,null,n);var r=t.memoizedState;if(a=r.cache,In(t,ke,a),a!==i.cache&&zs(t,[ke],n,!0),Wi(),a=r.element,i.isDehydrated)if(i={element:a,isDehydrated:!1,cache:r.cache},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){t=Bm(e,t,a,n);break e}else if(a!==l){l=Yt(Error(S(424)),t),cr(l),t=Bm(e,t,a,n);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(ye=Qt(e.firstChild),Xe=t,V=!0,oa=null,Vt=!0,n=lp(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Fa(),a===l){t=Un(e,t,n);break e}Ye(e,t,a,n)}t=t.child}return t;case 26:return Go(e,t),e===null?(n=eh(t.type,null,t.pendingProps,null))?t.memoizedState=n:V||(n=t.type,e=t.pendingProps,a=mu(ra.current).createElement(n),a[Ve]=t,a[vt]=e,Ke(a,n,e),qe(a),t.stateNode=a):t.memoizedState=eh(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Cs(t),e===null&&V&&(a=t.stateNode=Gy(t.type,t.pendingProps,ra.current),Xe=t,Vt=!0,l=ye,Aa(t.type)?(cd=l,ye=Qt(a.firstChild)):ye=l),Ye(e,t,t.pendingProps.children,n),Go(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&V&&((l=a=ye)&&(a=Sw(a,t.type,t.pendingProps,Vt),a!==null?(t.stateNode=a,Xe=t,ye=Qt(a.firstChild),Vt=!1,l=!0):l=!1),l||pa(t)),Cs(t),l=t.type,i=t.pendingProps,r=e!==null?e.memoizedProps:null,a=i.children,id(l,i)?a=null:r!==null&&id(l,r)&&(t.flags|=32),t.memoizedState!==null&&(l=Ld(e,t,GA,null,null,n),hr._currentValue=l),Go(e,t),Ye(e,t,a,n),t.child;case 6:return e===null&&V&&((e=n=ye)&&(n=Cw(n,t.pendingProps,Vt),n!==null?(t.stateNode=n,Xe=t,ye=null,e=!0):e=!1),e||pa(t)),null;case 13:return Qp(e,t,n);case 4:return Xo(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Ya(t,null,a,n):Ye(e,t,a,n),t.child;case 11:return Tm(e,t,t.type,t.pendingProps,n);case 7:return Ye(e,t,t.pendingProps,n),t.child;case 8:return Ye(e,t,t.pendingProps.children,n),t.child;case 12:return Ye(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.pendingProps,In(t,t.type,a.value),Ye(e,t,a.children,n),t.child;case 9:return l=t.type._context,a=t.pendingProps.children,ja(t),l=Qe(l),a=a(l),t.flags|=1,Ye(e,t,a,n),t.child;case 14:return Em(e,t,t.type,t.pendingProps,n);case 15:return Vp(e,t,t.type,t.pendingProps,n);case 19:return Kp(e,t,n);case 31:return QA(e,t,n);case 22:return Xp(e,t,n,t.pendingProps);case 24:return ja(t),a=Qe(ke),e===null?(l=_d(),l===null&&(l=ue,i=Md(),l.pooledCache=i,i.refCount++,i!==null&&(l.pooledCacheLanes|=n),l=i),t.memoizedState={parent:a,cache:l},Nd(t),In(t,ke,l)):((e.lanes&n)!==0&&(Gs(e,t),Ii(t,null,null,n),Wi()),l=e.memoizedState,i=t.memoizedState,l.parent!==a?(l={parent:a,cache:a},t.memoizedState=l,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=l),In(t,ke,a)):(a=i.cache,In(t,ke,a),a!==l.cache&&zs(t,[ke],n,!0))),Ye(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(S(156,t.tag))}function Cn(e){e.flags|=4}function rs(e,t,n,a,l){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(l&335544128)===l)if(e.stateNode.complete)e.flags|=8192;else if(by())e.flags|=8192;else throw Pa=eu,Bd}else e.flags&=-16777217}function Om(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Fy(t))if(by())e.flags|=8192;else throw Pa=eu,Bd}function Co(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Ah():536870912,e.lanes|=t,Ql|=t)}function Hi(e,t){if(!V)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function pe(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags&65011712,a|=l.flags&65011712,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags,a|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function ZA(e,t,n){var a=t.pendingProps;switch(xd(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return pe(t),null;case 1:return pe(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),On(ke),ql(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(vl(t)?Cn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Ic())),pe(t),null;case 26:var l=t.type,i=t.memoizedState;return e===null?(Cn(t),i!==null?(pe(t),Om(t,i)):(pe(t),rs(t,l,null,a,n))):i?i!==e.memoizedState?(Cn(t),pe(t),Om(t,i)):(pe(t),t.flags&=-16777217):(e=e.memoizedProps,e!==a&&Cn(t),pe(t),rs(t,l,e,a,n)),null;case 27:if(Qo(t),n=ra.current,l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Cn(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return pe(t),null}e=gn.current,vl(t)?um(t,e):(e=Gy(l,a,n),t.stateNode=e,Cn(t))}return pe(t),null;case 5:if(Qo(t),l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Cn(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return pe(t),null}if(i=gn.current,vl(t))um(t,i);else{var r=mu(ra.current);switch(i){case 1:i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":i=r.createElement("div"),i.innerHTML="<script><\/scr"+"ipt>",i=i.removeChild(i.firstChild);break;case"select":i=typeof a.is=="string"?r.createElement("select",{is:a.is}):r.createElement("select"),a.multiple?i.multiple=!0:a.size&&(i.size=a.size);break;default:i=typeof a.is=="string"?r.createElement(l,{is:a.is}):r.createElement(l)}}i[Ve]=t,i[vt]=a;e:for(r=t.child;r!==null;){if(r.tag===5||r.tag===6)i.appendChild(r.stateNode);else if(r.tag!==4&&r.tag!==27&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break e;for(;r.sibling===null;){if(r.return===null||r.return===t)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}t.stateNode=i;e:switch(Ke(i,l,a),l){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&Cn(t)}}return pe(t),rs(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&Cn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(S(166));if(e=ra.current,vl(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,l=Xe,l!==null)switch(l.tag){case 27:case 5:a=l.memoizedProps}e[Ve]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||Ly(e.nodeValue,n)),e||pa(t,!0)}else e=mu(e).createTextNode(a),e[Ve]=t,t.stateNode=e}return pe(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=vl(t),n!==null){if(e===null){if(!a)throw Error(S(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(557));e[Ve]=t}else Fa(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;pe(t),e=!1}else n=Ic(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Rt(t),t):(Rt(t),null);if((t.flags&128)!==0)throw Error(S(558))}return pe(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(l=vl(t),a!==null&&a.dehydrated!==null){if(e===null){if(!l)throw Error(S(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(S(317));l[Ve]=t}else Fa(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;pe(t),l=!1}else l=Ic(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return t.flags&256?(Rt(t),t):(Rt(t),null)}return Rt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,l=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(l=a.alternate.memoizedState.cachePool.pool),i=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),i!==l&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Co(t,t.updateQueue),pe(t),null);case 4:return ql(),e===null&&tf(t.stateNode.containerInfo),pe(t),null;case 10:return On(t.type),pe(t),null;case 19:if(Fe(xe),a=t.memoizedState,a===null)return pe(t),null;if(l=(t.flags&128)!==0,i=a.rendering,i===null)if(l)Hi(a,!1);else{if(Te!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(i=nu(e),i!==null){for(t.flags|=128,Hi(a,!1),e=i.updateQueue,t.updateQueue=e,Co(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Wh(n,e),n=n.sibling;return ge(xe,xe.current&1|2),V&&Dn(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Dt()>uu&&(t.flags|=128,l=!0,Hi(a,!1),t.lanes=4194304)}else{if(!l)if(e=nu(i),e!==null){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,Co(t,e),Hi(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!V)return pe(t),null}else 2*Dt()-a.renderingStartTime>uu&&n!==536870912&&(t.flags|=128,l=!0,Hi(a,!1),t.lanes=4194304);a.isBackwards?(i.sibling=t.child,t.child=i):(e=a.last,e!==null?e.sibling=i:t.child=i,a.last=i)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Dt(),e.sibling=null,n=xe.current,ge(xe,l?n&1|2:n&1),V&&Dn(t,a.treeForkCount),e):(pe(t),null);case 22:case 23:return Rt(t),Od(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(pe(t),t.subtreeFlags&6&&(t.flags|=8192)):pe(t),n=t.updateQueue,n!==null&&Co(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&Fe(Ga),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),On(ke),pe(t),null;case 25:return null;case 30:return null}throw Error(S(156,t.tag))}function WA(e,t){switch(xd(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return On(ke),ql(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Qo(t),null;case 31:if(t.memoizedState!==null){if(Rt(t),t.alternate===null)throw Error(S(340));Fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Rt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(S(340));Fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Fe(xe),null;case 4:return ql(),null;case 10:return On(t.type),null;case 22:case 23:return Rt(t),Od(),e!==null&&Fe(Ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return On(ke),null;case 25:return null;default:return null}}function Wp(e,t){switch(xd(t),t.tag){case 3:On(ke),ql();break;case 26:case 27:case 5:Qo(t);break;case 4:ql();break;case 31:t.memoizedState!==null&&Rt(t);break;case 13:Rt(t);break;case 19:Fe(xe);break;case 10:On(t.type);break;case 22:case 23:Rt(t),Od(),e!==null&&Fe(Ga);break;case 24:On(ke)}}function Er(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var l=a.next;n=l;do{if((n.tag&e)===e){a=void 0;var i=n.create,r=n.inst;a=i(),r.destroy=a}n=n.next}while(n!==l)}}catch(o){le(t,t.return,o)}}function ya(e,t,n){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&e)===e){var r=a.inst,o=r.destroy;if(o!==void 0){r.destroy=void 0,l=t;var u=n,c=o;try{c()}catch(s){le(l,u,s)}}}a=a.next}while(a!==i)}}catch(s){le(t,t.return,s)}}function Ip(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{rp(t,n)}catch(a){le(e,e.return,a)}}}function Jp(e,t,n){n.props=Xa(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){le(e,t,a)}}function $i(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(l){le(e,t,l)}}function fn(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(l){le(e,t,l)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(l){le(e,t,l)}else n.current=null}function $p(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(l){le(e,e.return,l)}}function os(e,t,n){try{var a=e.stateNode;pw(a,e.type,n,t),a[vt]=t}catch(l){le(e,e.return,l)}}function ey(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Aa(e.type)||e.tag===4}function us(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ey(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Aa(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ws(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=_n));else if(a!==4&&(a===27&&Aa(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Ws(e,t,n),e=e.sibling;e!==null;)Ws(e,t,n),e=e.sibling}function ou(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&Aa(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(ou(e,t,n),e=e.sibling;e!==null;)ou(e,t,n),e=e.sibling}function ty(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);Ke(t,a,n),t[Ve]=e,t[vt]=n}catch(i){le(e,e.return,i)}}var xn=!1,Oe=!1,cs=!1,km=typeof WeakSet=="function"?WeakSet:Set,Pe=null;function IA(e,t){if(e=e.containerInfo,ad=vu,e=Fh(e),Cd(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var l=a.anchorOffset,i=a.focusNode;a=a.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var r=0,o=-1,u=-1,c=0,s=0,f=e,d=null;t:for(;;){for(var m;f!==n||l!==0&&f.nodeType!==3||(o=r+l),f!==i||a!==0&&f.nodeType!==3||(u=r+a),f.nodeType===3&&(r+=f.nodeValue.length),(m=f.firstChild)!==null;)d=f,f=m;for(;;){if(f===e)break t;if(d===n&&++c===l&&(o=r),d===i&&++s===a&&(u=r),(m=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=m}n=o===-1||u===-1?null:{start:o,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ld={focusedElem:e,selectionRange:n},vu=!1,Pe=t;Pe!==null;)if(t=Pe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Pe=e;else for(;Pe!==null;){switch(t=Pe,i=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)l=e[n],l.ref.impl=l.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&i!==null){e=void 0,n=t,l=i.memoizedProps,i=i.memoizedState,a=n.stateNode;try{var v=Xa(n.type,l);e=a.getSnapshotBeforeUpdate(v,i),a.__reactInternalSnapshotBeforeUpdate=e}catch(A){le(n,n.return,A)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)rd(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":rd(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(S(163))}if(e=t.sibling,e!==null){e.return=t.return,Pe=e;break}Pe=t.return}}function ny(e,t,n){var a=n.flags;switch(n.tag){case 0:case 11:case 15:Tn(e,n),a&4&&Er(5,n);break;case 1:if(Tn(e,n),a&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(r){le(n,n.return,r)}else{var l=Xa(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(r){le(n,n.return,r)}}a&64&&Ip(n),a&512&&$i(n,n.return);break;case 3:if(Tn(e,n),a&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{rp(e,t)}catch(r){le(n,n.return,r)}}break;case 27:t===null&&a&4&&ty(n);case 26:case 5:Tn(e,n),t===null&&a&4&&$p(n),a&512&&$i(n,n.return);break;case 12:Tn(e,n);break;case 31:Tn(e,n),a&4&&iy(e,n);break;case 13:Tn(e,n),a&4&&ry(e,n),a&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=rw.bind(null,n),Rw(e,n))));break;case 22:if(a=n.memoizedState!==null||xn,!a){t=t!==null&&t.memoizedState!==null||Oe,l=xn;var i=Oe;xn=a,(Oe=t)&&!i?En(e,n,(n.subtreeFlags&8772)!==0):Tn(e,n),xn=l,Oe=i}break;case 30:break;default:Tn(e,n)}}function ay(e){var t=e.alternate;t!==null&&(e.alternate=null,ay(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&yd(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Ce=null,ht=!1;function Rn(e,t,n){for(n=n.child;n!==null;)ly(e,t,n),n=n.sibling}function ly(e,t,n){if(xt&&typeof xt.onCommitFiberUnmount=="function")try{xt.onCommitFiberUnmount(br,n)}catch{}switch(n.tag){case 26:Oe||fn(n,t),Rn(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Oe||fn(n,t);var a=Ce,l=ht;Aa(n.type)&&(Ce=n.stateNode,ht=!1),Rn(e,t,n),ar(n.stateNode),Ce=a,ht=l;break;case 5:Oe||fn(n,t);case 6:if(a=Ce,l=ht,Ce=null,Rn(e,t,n),Ce=a,ht=l,Ce!==null)if(ht)try{(Ce.nodeType===9?Ce.body:Ce.nodeName==="HTML"?Ce.ownerDocument.body:Ce).removeChild(n.stateNode)}catch(i){le(n,t,i)}else try{Ce.removeChild(n.stateNode)}catch(i){le(n,t,i)}break;case 18:Ce!==null&&(ht?(e=Ce,Zm(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),Il(e)):Zm(Ce,n.stateNode));break;case 4:a=Ce,l=ht,Ce=n.stateNode.containerInfo,ht=!0,Rn(e,t,n),Ce=a,ht=l;break;case 0:case 11:case 14:case 15:ya(2,n,t),Oe||ya(4,n,t),Rn(e,t,n);break;case 1:Oe||(fn(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"&&Jp(n,t,a)),Rn(e,t,n);break;case 21:Rn(e,t,n);break;case 22:Oe=(a=Oe)||n.memoizedState!==null,Rn(e,t,n),Oe=a;break;default:Rn(e,t,n)}}function iy(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Il(e)}catch(n){le(t,t.return,n)}}}function ry(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Il(e)}catch(n){le(t,t.return,n)}}function JA(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new km),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new km),t;default:throw Error(S(435,e.tag))}}function Ro(e,t){var n=JA(e);t.forEach(function(a){if(!n.has(a)){n.add(a);var l=ow.bind(null,e,a);a.then(l,l)}})}function gt(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var l=n[a],i=e,r=t,o=r;e:for(;o!==null;){switch(o.tag){case 27:if(Aa(o.type)){Ce=o.stateNode,ht=!1;break e}break;case 5:Ce=o.stateNode,ht=!1;break e;case 3:case 4:Ce=o.stateNode.containerInfo,ht=!0;break e}o=o.return}if(Ce===null)throw Error(S(160));ly(i,r,l),Ce=null,ht=!1,i=l.alternate,i!==null&&(i.return=null),l.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)oy(t,e),t=t.sibling}var en=null;function oy(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:gt(t,e),mt(e),a&4&&(ya(3,e,e.return),Er(3,e),ya(5,e,e.return));break;case 1:gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),a&64&&xn&&(e=e.updateQueue,e!==null&&(a=e.callbacks,a!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?a:n.concat(a))));break;case 26:var l=en;if(gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),a&4){var i=n!==null?n.memoizedState:null;if(a=e.memoizedState,n===null)if(a===null)if(e.stateNode===null){e:{a=e.type,n=e.memoizedProps,l=l.ownerDocument||l;t:switch(a){case"title":i=l.getElementsByTagName("title")[0],(!i||i[Sr]||i[Ve]||i.namespaceURI==="http://www.w3.org/2000/svg"||i.hasAttribute("itemprop"))&&(i=l.createElement(a),l.head.insertBefore(i,l.querySelector("head > title"))),Ke(i,a,n),i[Ve]=e,qe(i),a=i;break e;case"link":var r=nh("link","href",l).get(a+(n.href||""));if(r){for(var o=0;o<r.length;o++)if(i=r[o],i.getAttribute("href")===(n.href==null||n.href===""?null:n.href)&&i.getAttribute("rel")===(n.rel==null?null:n.rel)&&i.getAttribute("title")===(n.title==null?null:n.title)&&i.getAttribute("crossorigin")===(n.crossOrigin==null?null:n.crossOrigin)){r.splice(o,1);break t}}i=l.createElement(a),Ke(i,a,n),l.head.appendChild(i);break;case"meta":if(r=nh("meta","content",l).get(a+(n.content||""))){for(o=0;o<r.length;o++)if(i=r[o],i.getAttribute("content")===(n.content==null?null:""+n.content)&&i.getAttribute("name")===(n.name==null?null:n.name)&&i.getAttribute("property")===(n.property==null?null:n.property)&&i.getAttribute("http-equiv")===(n.httpEquiv==null?null:n.httpEquiv)&&i.getAttribute("charset")===(n.charSet==null?null:n.charSet)){r.splice(o,1);break t}}i=l.createElement(a),Ke(i,a,n),l.head.appendChild(i);break;default:throw Error(S(468,a))}i[Ve]=e,qe(i),a=i}e.stateNode=a}else ah(l,e.type,e.stateNode);else e.stateNode=th(l,a,e.memoizedProps);else i!==a?(i===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):i.count--,a===null?ah(l,e.type,e.stateNode):th(l,a,e.memoizedProps)):a===null&&e.stateNode!==null&&os(e,e.memoizedProps,n.memoizedProps)}break;case 27:gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),n!==null&&a&4&&os(e,e.memoizedProps,n.memoizedProps);break;case 5:if(gt(t,e),mt(e),a&512&&(Oe||n===null||fn(n,n.return)),e.flags&32){l=e.stateNode;try{jl(l,"")}catch(v){le(e,e.return,v)}}a&4&&e.stateNode!=null&&(l=e.memoizedProps,os(e,l,n!==null?n.memoizedProps:l)),a&1024&&(cs=!0);break;case 6:if(gt(t,e),mt(e),a&4){if(e.stateNode===null)throw Error(S(162));a=e.memoizedProps,n=e.stateNode;try{n.nodeValue=a}catch(v){le(e,e.return,v)}}break;case 3:if(Fo=null,l=en,en=hu(t.containerInfo),gt(t,e),en=l,mt(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{Il(t.containerInfo)}catch(v){le(e,e.return,v)}cs&&(cs=!1,uy(e));break;case 4:a=en,en=hu(e.stateNode.containerInfo),gt(t,e),mt(e),en=a;break;case 12:gt(t,e),mt(e);break;case 31:gt(t,e),mt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Ro(e,a)));break;case 13:gt(t,e),mt(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Bu=Dt()),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Ro(e,a)));break;case 22:l=e.memoizedState!==null;var u=n!==null&&n.memoizedState!==null,c=xn,s=Oe;if(xn=c||l,Oe=s||u,gt(t,e),Oe=s,xn=c,mt(e),a&8192)e:for(t=e.stateNode,t._visibility=l?t._visibility&-2:t._visibility|1,l&&(n===null||u||xn||Oe||Ha(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){u=n=t;try{if(i=u.stateNode,l)r=i.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{o=u.stateNode;var f=u.memoizedProps.style,d=f!=null&&f.hasOwnProperty("display")?f.display:null;o.style.display=d==null||typeof d=="boolean"?"":(""+d).trim()}}catch(v){le(u,u.return,v)}}}else if(t.tag===6){if(n===null){u=t;try{u.stateNode.nodeValue=l?"":u.memoizedProps}catch(v){le(u,u.return,v)}}}else if(t.tag===18){if(n===null){u=t;try{var m=u.stateNode;l?Wm(m,!0):Wm(u.stateNode,!1)}catch(v){le(u,u.return,v)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=e.updateQueue,a!==null&&(n=a.retryQueue,n!==null&&(a.retryQueue=null,Ro(e,n))));break;case 19:gt(t,e),mt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Ro(e,a)));break;case 30:break;case 21:break;default:gt(t,e),mt(e)}}function mt(e){var t=e.flags;if(t&2){try{for(var n,a=e.return;a!==null;){if(ey(a)){n=a;break}a=a.return}if(n==null)throw Error(S(160));switch(n.tag){case 27:var l=n.stateNode,i=us(e);ou(e,i,l);break;case 5:var r=n.stateNode;n.flags&32&&(jl(r,""),n.flags&=-33);var o=us(e);ou(e,o,r);break;case 3:case 4:var u=n.stateNode.containerInfo,c=us(e);Ws(e,c,u);break;default:throw Error(S(161))}}catch(s){le(e,e.return,s)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function uy(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;uy(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function Tn(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)ny(e,t.alternate,t),t=t.sibling}function Ha(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ya(4,t,t.return),Ha(t);break;case 1:fn(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount=="function"&&Jp(t,t.return,n),Ha(t);break;case 27:ar(t.stateNode);case 26:case 5:fn(t,t.return),Ha(t);break;case 22:t.memoizedState===null&&Ha(t);break;case 30:Ha(t);break;default:Ha(t)}e=e.sibling}}function En(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,l=e,i=t,r=i.flags;switch(i.tag){case 0:case 11:case 15:En(l,i,n),Er(4,i);break;case 1:if(En(l,i,n),a=i,l=a.stateNode,typeof l.componentDidMount=="function")try{l.componentDidMount()}catch(c){le(a,a.return,c)}if(a=i,l=a.updateQueue,l!==null){var o=a.stateNode;try{var u=l.shared.hiddenCallbacks;if(u!==null)for(l.shared.hiddenCallbacks=null,l=0;l<u.length;l++)ip(u[l],o)}catch(c){le(a,a.return,c)}}n&&r&64&&Ip(i),$i(i,i.return);break;case 27:ty(i);case 26:case 5:En(l,i,n),n&&a===null&&r&4&&$p(i),$i(i,i.return);break;case 12:En(l,i,n);break;case 31:En(l,i,n),n&&r&4&&iy(l,i);break;case 13:En(l,i,n),n&&r&4&&ry(l,i);break;case 22:i.memoizedState===null&&En(l,i,n),$i(i,i.return);break;case 30:break;default:En(l,i,n)}t=t.sibling}}function Zd(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&Rr(n))}function Wd(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Rr(e))}function $t(e,t,n,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)cy(e,t,n,a),t=t.sibling}function cy(e,t,n,a){var l=t.flags;switch(t.tag){case 0:case 11:case 15:$t(e,t,n,a),l&2048&&Er(9,t);break;case 1:$t(e,t,n,a);break;case 3:$t(e,t,n,a),l&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Rr(e)));break;case 12:if(l&2048){$t(e,t,n,a),e=t.stateNode;try{var i=t.memoizedProps,r=i.id,o=i.onPostCommit;typeof o=="function"&&o(r,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(u){le(t,t.return,u)}}else $t(e,t,n,a);break;case 31:$t(e,t,n,a);break;case 13:$t(e,t,n,a);break;case 23:break;case 22:i=t.stateNode,r=t.alternate,t.memoizedState!==null?i._visibility&2?$t(e,t,n,a):er(e,t):i._visibility&2?$t(e,t,n,a):(i._visibility|=2,Al(e,t,n,a,(t.subtreeFlags&10256)!==0||!1)),l&2048&&Zd(r,t);break;case 24:$t(e,t,n,a),l&2048&&Wd(t.alternate,t);break;default:$t(e,t,n,a)}}function Al(e,t,n,a,l){for(l=l&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var i=e,r=t,o=n,u=a,c=r.flags;switch(r.tag){case 0:case 11:case 15:Al(i,r,o,u,l),Er(8,r);break;case 23:break;case 22:var s=r.stateNode;r.memoizedState!==null?s._visibility&2?Al(i,r,o,u,l):er(i,r):(s._visibility|=2,Al(i,r,o,u,l)),l&&c&2048&&Zd(r.alternate,r);break;case 24:Al(i,r,o,u,l),l&&c&2048&&Wd(r.alternate,r);break;default:Al(i,r,o,u,l)}t=t.sibling}}function er(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,a=t,l=a.flags;switch(a.tag){case 22:er(n,a),l&2048&&Zd(a.alternate,a);break;case 24:er(n,a),l&2048&&Wd(a.alternate,a);break;default:er(n,a)}t=t.sibling}}var Yi=8192;function bl(e,t,n){if(e.subtreeFlags&Yi)for(e=e.child;e!==null;)sy(e,t,n),e=e.sibling}function sy(e,t,n){switch(e.tag){case 26:bl(e,t,n),e.flags&Yi&&e.memoizedState!==null&&Hw(n,en,e.memoizedState,e.memoizedProps);break;case 5:bl(e,t,n);break;case 3:case 4:var a=en;en=hu(e.stateNode.containerInfo),bl(e,t,n),en=a;break;case 22:e.memoizedState===null&&(a=e.alternate,a!==null&&a.memoizedState!==null?(a=Yi,Yi=16777216,bl(e,t,n),Yi=a):bl(e,t,n));break;default:bl(e,t,n)}}function dy(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function zi(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,gy(a,e)}dy(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)fy(e),e=e.sibling}function fy(e){switch(e.tag){case 0:case 11:case 15:zi(e),e.flags&2048&&ya(9,e,e.return);break;case 3:zi(e);break;case 12:zi(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Po(e)):zi(e);break;default:zi(e)}}function Po(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,gy(a,e)}dy(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ya(8,t,t.return),Po(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Po(t));break;default:Po(t)}e=e.sibling}}function gy(e,t){for(;Pe!==null;){var n=Pe;switch(n.tag){case 0:case 11:case 15:ya(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var a=n.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:Rr(n.memoizedState.cache)}if(a=n.child,a!==null)a.return=n,Pe=a;else e:for(n=e;Pe!==null;){a=Pe;var l=a.sibling,i=a.return;if(ay(a),a===n){Pe=null;break e}if(l!==null){l.return=i,Pe=l;break e}Pe=i}}}var $A={getCacheForType:function(e){var t=Qe(ke),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Qe(ke).controller.signal}},ew=typeof WeakMap=="function"?WeakMap:Map,J=0,ue=null,F=null,Y=0,ae=0,Ct=null,aa=!1,ni=!1,Id=!1,Gn=0,Te=0,va=0,qa=0,Jd=0,Et=0,Ql=0,tr=null,pt=null,Is=!1,Bu=0,my=0,uu=1/0,cu=null,sa=null,Ue=0,da=null,Kl=null,kn=0,Js=0,$s=null,hy=null,nr=0,ed=null;function _t(){return(J&2)!==0&&Y!==0?Y&-Y:L.T!==null?ef():Rh()}function py(){if(Et===0)if((Y&536870912)===0||V){var e=mo;mo<<=1,(mo&3932160)===0&&(mo=262144),Et=e}else Et=536870912;return e=Nt.current,e!==null&&(e.flags|=32),Et}function yt(e,t,n){(e===ue&&(ae===2||ae===9)||e.cancelPendingCommit!==null)&&(Zl(e,0),la(e,Y,Et,!1)),wr(e,n),((J&2)===0||e!==ue)&&(e===ue&&((J&2)===0&&(qa|=n),Te===4&&la(e,Y,Et,!1)),hn(e))}function yy(e,t,n){if((J&6)!==0)throw Error(S(327));var a=!n&&(t&127)===0&&(t&e.expiredLanes)===0||Ar(e,t),l=a?aw(e,t):ss(e,t,!0),i=a;do{if(l===0){ni&&!a&&la(e,t,0,!1);break}else{if(n=e.current.alternate,i&&!tw(n)){l=ss(e,t,!1),i=!1;continue}if(l===2){if(i=t,e.errorRecoveryDisabledLanes&i)var r=0;else r=e.pendingLanes&-536870913,r=r!==0?r:r&536870912?536870912:0;if(r!==0){t=r;e:{var o=e;l=tr;var u=o.current.memoizedState.isDehydrated;if(u&&(Zl(o,r).flags|=256),r=ss(o,r,!1),r!==2){if(Id&&!u){o.errorRecoveryDisabledLanes|=i,qa|=i,l=4;break e}i=pt,pt=l,i!==null&&(pt===null?pt=i:pt.push.apply(pt,i))}l=r}if(i=!1,l!==2)continue}}if(l===1){Zl(e,0),la(e,t,0,!0);break}e:{switch(a=e,i=l,i){case 0:case 1:throw Error(S(345));case 4:if((t&4194048)!==t)break;case 6:la(a,t,Et,!aa);break e;case 2:pt=null;break;case 3:case 5:break;default:throw Error(S(329))}if((t&62914560)===t&&(l=Bu+300-Dt(),10<l)){if(la(a,t,Et,!aa),Au(a,0,!0)!==0)break e;kn=t,a.timeoutHandle=zy(Lm.bind(null,a,n,pt,cu,Is,t,Et,qa,Ql,aa,i,"Throttled",-0,0),l);break e}Lm(a,n,pt,cu,Is,t,Et,qa,Ql,aa,i,null,-0,0)}}break}while(!0);hn(e)}function Lm(e,t,n,a,l,i,r,o,u,c,s,f,d,m){if(e.timeoutHandle=-1,f=t.subtreeFlags,f&8192||(f&16785408)===16785408){f={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:_n},sy(t,i,f);var v=(i&62914560)===i?Bu-Dt():(i&4194048)===i?my-Dt():0;if(v=zw(f,v),v!==null){kn=i,e.cancelPendingCommit=v(zm.bind(null,e,t,i,n,a,l,r,o,u,s,f,null,d,m)),la(e,i,r,!c);return}}zm(e,t,i,n,a,l,r,o,u)}function tw(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var a=0;a<n.length;a++){var l=n[a],i=l.getSnapshot;l=l.value;try{if(!Bt(i(),l))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function la(e,t,n,a){t&=~Jd,t&=~qa,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var l=t;0<l;){var i=31-Mt(l),r=1<<i;a[i]=-1,l&=~r}n!==0&&wh(e,n,t)}function Nu(){return(J&6)===0?(Dr(0,!1),!1):!0}function $d(){if(F!==null){if(ae===0)var e=F.return;else e=F,Bn=Ia=null,Ud(e),Ul=null,sr=0,e=F;for(;e!==null;)Wp(e.alternate,e),e=e.return;F=null}}function Zl(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,bw(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),kn=0,$d(),ue=e,F=n=Nn(e.current,null),Y=t,ae=0,Ct=null,aa=!1,ni=Ar(e,t),Id=!1,Ql=Et=Jd=qa=va=Te=0,pt=tr=null,Is=!1,(t&8)!==0&&(t|=t&32);var a=e.entangledLanes;if(a!==0)for(e=e.entanglements,a&=t;0<a;){var l=31-Mt(a),i=1<<l;t|=e[l],a&=~i}return Gn=t,Ru(),n}function vy(e,t){G=null,L.H=fr,t===ti||t===Eu?(t=gm(),ae=3):t===Bd?(t=gm(),ae=4):ae=t===Qd?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,Ct=t,F===null&&(Te=1,iu(e,Yt(t,e.current)))}function by(){var e=Nt.current;return e===null?!0:(Y&4194048)===Y?Xt===null:(Y&62914560)===Y||(Y&536870912)!==0?e===Xt:!1}function Ay(){var e=L.H;return L.H=fr,e===null?fr:e}function wy(){var e=L.A;return L.A=$A,e}function su(){Te=4,aa||(Y&4194048)!==Y&&Nt.current!==null||(ni=!0),(va&134217727)===0&&(qa&134217727)===0||ue===null||la(ue,Y,Et,!1)}function ss(e,t,n){var a=J;J|=2;var l=Ay(),i=wy();(ue!==e||Y!==t)&&(cu=null,Zl(e,t)),t=!1;var r=Te;e:do try{if(ae!==0&&F!==null){var o=F,u=Ct;switch(ae){case 8:$d(),r=6;break e;case 3:case 2:case 9:case 6:Nt.current===null&&(t=!0);var c=ae;if(ae=0,Ct=null,Ol(e,o,u,c),n&&ni){r=0;break e}break;default:c=ae,ae=0,Ct=null,Ol(e,o,u,c)}}nw(),r=Te;break}catch(s){vy(e,s)}while(!0);return t&&e.shellSuspendCounter++,Bn=Ia=null,J=a,L.H=l,L.A=i,F===null&&(ue=null,Y=0,Ru()),r}function nw(){for(;F!==null;)Sy(F)}function aw(e,t){var n=J;J|=2;var a=Ay(),l=wy();ue!==e||Y!==t?(cu=null,uu=Dt()+500,Zl(e,t)):ni=Ar(e,t);e:do try{if(ae!==0&&F!==null){t=F;var i=Ct;t:switch(ae){case 1:ae=0,Ct=null,Ol(e,t,i,1);break;case 2:case 9:if(fm(i)){ae=0,Ct=null,Hm(t);break}t=function(){ae!==2&&ae!==9||ue!==e||(ae=7),hn(e)},i.then(t,t);break e;case 3:ae=7;break e;case 4:ae=5;break e;case 7:fm(i)?(ae=0,Ct=null,Hm(t)):(ae=0,Ct=null,Ol(e,t,i,7));break;case 5:var r=null;switch(F.tag){case 26:r=F.memoizedState;case 5:case 27:var o=F;if(r?Fy(r):o.stateNode.complete){ae=0,Ct=null;var u=o.sibling;if(u!==null)F=u;else{var c=o.return;c!==null?(F=c,Ou(c)):F=null}break t}}ae=0,Ct=null,Ol(e,t,i,5);break;case 6:ae=0,Ct=null,Ol(e,t,i,6);break;case 8:$d(),Te=6;break e;default:throw Error(S(462))}}lw();break}catch(s){vy(e,s)}while(!0);return Bn=Ia=null,L.H=a,L.A=l,J=n,F!==null?0:(ue=null,Y=0,Ru(),Te)}function lw(){for(;F!==null&&!Db();)Sy(F)}function Sy(e){var t=Zp(e.alternate,e,Gn);e.memoizedProps=e.pendingProps,t===null?Ou(e):F=t}function Hm(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Mm(n,t,t.pendingProps,t.type,void 0,Y);break;case 11:t=Mm(n,t,t.pendingProps,t.type.render,t.ref,Y);break;case 5:Ud(t);default:Wp(n,t),t=F=Wh(t,Gn),t=Zp(n,t,Gn)}e.memoizedProps=e.pendingProps,t===null?Ou(e):F=t}function Ol(e,t,n,a){Bn=Ia=null,Ud(t),Ul=null,sr=0;var l=t.return;try{if(XA(e,l,t,n,Y)){Te=1,iu(e,Yt(n,e.current)),F=null;return}}catch(i){if(l!==null)throw F=l,i;Te=1,iu(e,Yt(n,e.current)),F=null;return}t.flags&32768?(V||a===1?e=!0:ni||(Y&536870912)!==0?e=!1:(aa=e=!0,(a===2||a===9||a===3||a===6)&&(a=Nt.current,a!==null&&a.tag===13&&(a.flags|=16384))),Cy(t,e)):Ou(t)}function Ou(e){var t=e;do{if((t.flags&32768)!==0){Cy(t,aa);return}e=t.return;var n=ZA(t.alternate,t,Gn);if(n!==null){F=n;return}if(t=t.sibling,t!==null){F=t;return}F=t=e}while(t!==null);Te===0&&(Te=5)}function Cy(e,t){do{var n=WA(e.alternate,e);if(n!==null){n.flags&=32767,F=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){F=e;return}F=e=n}while(e!==null);Te=6,F=null}function zm(e,t,n,a,l,i,r,o,u){e.cancelPendingCommit=null;do ku();while(Ue!==0);if((J&6)!==0)throw Error(S(327));if(t!==null){if(t===e.current)throw Error(S(177));if(i=t.lanes|t.childLanes,i|=Rd,zb(e,n,i,r,o,u),e===ue&&(F=ue=null,Y=0),Kl=t,da=e,kn=n,Js=i,$s=l,hy=a,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,uw(Ko,function(){return xy(),null})):(e.callbackNode=null,e.callbackPriority=0),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=L.T,L.T=null,l=$.p,$.p=2,r=J,J|=4;try{IA(e,t,n)}finally{J=r,$.p=l,L.T=a}}Ue=1,Ry(),Ty(),Ey()}}function Ry(){if(Ue===1){Ue=0;var e=da,t=Kl,n=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||n){n=L.T,L.T=null;var a=$.p;$.p=2;var l=J;J|=4;try{oy(t,e);var i=ld,r=Fh(e.containerInfo),o=i.focusedElem,u=i.selectionRange;if(r!==o&&o&&o.ownerDocument&&qh(o.ownerDocument.documentElement,o)){if(u!==null&&Cd(o)){var c=u.start,s=u.end;if(s===void 0&&(s=c),"selectionStart"in o)o.selectionStart=c,o.selectionEnd=Math.min(s,o.value.length);else{var f=o.ownerDocument||document,d=f&&f.defaultView||window;if(d.getSelection){var m=d.getSelection(),v=o.textContent.length,A=Math.min(u.start,v),b=u.end===void 0?A:Math.min(u.end,v);!m.extend&&A>b&&(r=b,b=A,A=r);var h=im(o,A),g=im(o,b);if(h&&g&&(m.rangeCount!==1||m.anchorNode!==h.node||m.anchorOffset!==h.offset||m.focusNode!==g.node||m.focusOffset!==g.offset)){var p=f.createRange();p.setStart(h.node,h.offset),m.removeAllRanges(),A>b?(m.addRange(p),m.extend(g.node,g.offset)):(p.setEnd(g.node,g.offset),m.addRange(p))}}}}for(f=[],m=o;m=m.parentNode;)m.nodeType===1&&f.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o<f.length;o++){var y=f[o];y.element.scrollLeft=y.left,y.element.scrollTop=y.top}}vu=!!ad,ld=ad=null}finally{J=l,$.p=a,L.T=n}}e.current=t,Ue=2}}function Ty(){if(Ue===2){Ue=0;var e=da,t=Kl,n=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||n){n=L.T,L.T=null;var a=$.p;$.p=2;var l=J;J|=4;try{ny(e,t.alternate,t)}finally{J=l,$.p=a,L.T=n}}Ue=3}}function Ey(){if(Ue===4||Ue===3){Ue=0,xb();var e=da,t=Kl,n=kn,a=hy;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?Ue=5:(Ue=0,Kl=da=null,Dy(e,e.pendingLanes));var l=e.pendingLanes;if(l===0&&(sa=null),pd(n),t=t.stateNode,xt&&typeof xt.onCommitFiberRoot=="function")try{xt.onCommitFiberRoot(br,t,void 0,(t.current.flags&128)===128)}catch{}if(a!==null){t=L.T,l=$.p,$.p=2,L.T=null;try{for(var i=e.onRecoverableError,r=0;r<a.length;r++){var o=a[r];i(o.value,{componentStack:o.stack})}}finally{L.T=t,$.p=l}}(kn&3)!==0&&ku(),hn(e),l=e.pendingLanes,(n&261930)!==0&&(l&42)!==0?e===ed?nr++:(nr=0,ed=e):nr=0,Dr(0,!1)}}function Dy(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Rr(t)))}function ku(){return Ry(),Ty(),Ey(),xy()}function xy(){if(Ue!==5)return!1;var e=da,t=Js;Js=0;var n=pd(kn),a=L.T,l=$.p;try{$.p=32>n?32:n,L.T=null,n=$s,$s=null;var i=da,r=kn;if(Ue=0,Kl=da=null,kn=0,(J&6)!==0)throw Error(S(331));var o=J;if(J|=4,fy(i.current),cy(i,i.current,r,n),J=o,Dr(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(br,i)}catch{}return!0}finally{$.p=l,L.T=a,Dy(e,t)}}function Um(e,t,n){t=Yt(n,t),t=Qs(e.stateNode,t,2),e=ca(e,t,2),e!==null&&(wr(e,2),hn(e))}function le(e,t,n){if(e.tag===3)Um(e,e,n);else for(;t!==null;){if(t.tag===3){Um(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(sa===null||!sa.has(a))){e=Yt(n,e),n=jp(2),a=ca(t,n,2),a!==null&&(Yp(n,a,t,e),wr(a,2),hn(a));break}}t=t.return}}function ds(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new ew;var l=new Set;a.set(t,l)}else l=a.get(t),l===void 0&&(l=new Set,a.set(t,l));l.has(n)||(Id=!0,l.add(n),e=iw.bind(null,e,t,n),t.then(e,e))}function iw(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ue===e&&(Y&n)===n&&(Te===4||Te===3&&(Y&62914560)===Y&&300>Dt()-Bu?(J&2)===0&&Zl(e,0):Jd|=n,Ql===Y&&(Ql=0)),hn(e)}function My(e,t){t===0&&(t=Ah()),e=Wa(e,t),e!==null&&(wr(e,t),hn(e))}function rw(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),My(e,n)}function ow(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(S(314))}a!==null&&a.delete(t),My(e,n)}function uw(e,t){return md(e,t)}var du=null,wl=null,td=!1,fu=!1,fs=!1,ia=0;function hn(e){e!==wl&&e.next===null&&(wl===null?du=wl=e:wl=wl.next=e),fu=!0,td||(td=!0,sw())}function Dr(e,t){if(!fs&&fu){fs=!0;do for(var n=!1,a=du;a!==null;){if(!t)if(e!==0){var l=a.pendingLanes;if(l===0)var i=0;else{var r=a.suspendedLanes,o=a.pingedLanes;i=(1<<31-Mt(42|e)+1)-1,i&=l&~(r&~o),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(n=!0,Gm(a,i))}else i=Y,i=Au(a,a===ue?i:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(i&3)===0||Ar(a,i)||(n=!0,Gm(a,i));a=a.next}while(n);fs=!1}}function cw(){_y()}function _y(){fu=td=!1;var e=0;ia!==0&&vw()&&(e=ia);for(var t=Dt(),n=null,a=du;a!==null;){var l=a.next,i=By(a,t);i===0?(a.next=null,n===null?du=l:n.next=l,l===null&&(wl=n)):(n=a,(e!==0||(i&3)!==0)&&(fu=!0)),a=l}Ue!==0&&Ue!==5||Dr(e,!1),ia!==0&&(ia=0)}function By(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,l=e.expirationTimes,i=e.pendingLanes&-62914561;0<i;){var r=31-Mt(i),o=1<<r,u=l[r];u===-1?((o&n)===0||(o&a)!==0)&&(l[r]=Hb(o,t)):u<=t&&(e.expiredLanes|=o),i&=~o}if(t=ue,n=Y,n=Au(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a=e.callbackNode,n===0||e===t&&(ae===2||ae===9)||e.cancelPendingCommit!==null)return a!==null&&a!==null&&qc(a),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||Ar(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(a!==null&&qc(a),pd(n)){case 2:case 8:n=vh;break;case 32:n=Ko;break;case 268435456:n=bh;break;default:n=Ko}return a=Ny.bind(null,e),n=md(n,a),e.callbackPriority=t,e.callbackNode=n,t}return a!==null&&a!==null&&qc(a),e.callbackPriority=2,e.callbackNode=null,2}function Ny(e,t){if(Ue!==0&&Ue!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(ku()&&e.callbackNode!==n)return null;var a=Y;return a=Au(e,e===ue?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a===0?null:(yy(e,a,t),By(e,Dt()),e.callbackNode!=null&&e.callbackNode===n?Ny.bind(null,e):null)}function Gm(e,t){if(ku())return null;yy(e,t,!0)}function sw(){Aw(function(){(J&6)!==0?md(yh,cw):_y()})}function ef(){if(ia===0){var e=Yl;e===0&&(e=go,go<<=1,(go&261888)===0&&(go=256)),ia=e}return ia}function Pm(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Bo(""+e)}function qm(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function dw(e,t,n,a,l){if(t==="submit"&&n&&n.stateNode===l){var i=Pm((l[vt]||null).action),r=a.submitter;r&&(t=(t=r[vt]||null)?Pm(t.formAction):r.getAttribute("formAction"),t!==null&&(i=t,r=null));var o=new wu("action","action",null,a,l);e.push({event:o,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(ia!==0){var u=r?qm(l,r):new FormData(l);Vs(n,{pending:!0,data:u,method:l.method,action:i},null,u)}}else typeof i=="function"&&(o.preventDefault(),u=r?qm(l,r):new FormData(l),Vs(n,{pending:!0,data:u,method:l.method,action:i},i,u))},currentTarget:l}]})}}for(To=0;To<Os.length;To++)Eo=Os[To],Fm=Eo.toLowerCase(),jm=Eo[0].toUpperCase()+Eo.slice(1),tn(Fm,"on"+jm);var Eo,Fm,jm,To;tn(Yh,"onAnimationEnd");tn(Vh,"onAnimationIteration");tn(Xh,"onAnimationStart");tn("dblclick","onDoubleClick");tn("focusin","onFocus");tn("focusout","onBlur");tn(MA,"onTransitionRun");tn(_A,"onTransitionStart");tn(BA,"onTransitionCancel");tn(Qh,"onTransitionEnd");Fl("onMouseEnter",["mouseout","mouseover"]);Fl("onMouseLeave",["mouseout","mouseover"]);Fl("onPointerEnter",["pointerout","pointerover"]);Fl("onPointerLeave",["pointerout","pointerover"]);Qa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Qa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Qa("onBeforeInput",["compositionend","keypress","textInput","paste"]);Qa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Qa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Qa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var gr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),fw=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(gr));function Oy(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],l=a.event;a=a.listeners;e:{var i=void 0;if(t)for(var r=a.length-1;0<=r;r--){var o=a[r],u=o.instance,c=o.currentTarget;if(o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Wo(s)}l.currentTarget=null,i=u}else for(r=0;r<a.length;r++){if(o=a[r],u=o.instance,c=o.currentTarget,o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Wo(s)}l.currentTarget=null,i=u}}}}function q(e,t){var n=t[Ts];n===void 0&&(n=t[Ts]=new Set);var a=e+"__bubble";n.has(a)||(ky(t,e,2,!1),n.add(a))}function gs(e,t,n){var a=0;t&&(a|=4),ky(n,e,a,t)}var Do="_reactListening"+Math.random().toString(36).slice(2);function tf(e){if(!e[Do]){e[Do]=!0,Th.forEach(function(n){n!=="selectionchange"&&(fw.has(n)||gs(n,!1,e),gs(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Do]||(t[Do]=!0,gs("selectionchange",!1,t))}}function ky(e,t,n,a){switch(Qy(t)){case 2:var l=Pw;break;case 8:l=qw;break;default:l=rf}n=l.bind(null,t,n,e),l=void 0,!_s||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(l=!0),a?l!==void 0?e.addEventListener(t,n,{capture:!0,passive:l}):e.addEventListener(t,n,!0):l!==void 0?e.addEventListener(t,n,{passive:l}):e.addEventListener(t,n,!1)}function ms(e,t,n,a,l){var i=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var r=a.tag;if(r===3||r===4){var o=a.stateNode.containerInfo;if(o===l)break;if(r===4)for(r=a.return;r!==null;){var u=r.tag;if((u===3||u===4)&&r.stateNode.containerInfo===l)return;r=r.return}for(;o!==null;){if(r=Rl(o),r===null)return;if(u=r.tag,u===5||u===6||u===26||u===27){a=i=r;continue e}o=o.parentNode}}a=a.return}Oh(function(){var c=i,s=bd(n),f=[];e:{var d=Kh.get(e);if(d!==void 0){var m=wu,v=e;switch(e){case"keypress":if(Oo(n)===0)break e;case"keydown":case"keyup":m=oA;break;case"focusin":v="focus",m=Xc;break;case"focusout":v="blur",m=Xc;break;case"beforeblur":case"afterblur":m=Xc;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=Wg;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=Zb;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=sA;break;case Yh:case Vh:case Xh:m=Jb;break;case Qh:m=fA;break;case"scroll":case"scrollend":m=Qb;break;case"wheel":m=mA;break;case"copy":case"cut":case"paste":m=eA;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=Jg;break;case"toggle":case"beforetoggle":m=pA}var A=(t&4)!==0,b=!A&&(e==="scroll"||e==="scrollend"),h=A?d!==null?d+"Capture":null:d;A=[];for(var g=c,p;g!==null;){var y=g;if(p=y.stateNode,y=y.tag,y!==5&&y!==26&&y!==27||p===null||h===null||(y=ir(g,h),y!=null&&A.push(mr(g,y,p))),b)break;g=g.return}0<A.length&&(d=new m(d,v,null,n,s),f.push({event:d,listeners:A}))}}if((t&7)===0){e:{if(d=e==="mouseover"||e==="pointerover",m=e==="mouseout"||e==="pointerout",d&&n!==Ms&&(v=n.relatedTarget||n.fromElement)&&(Rl(v)||v[Jl]))break e;if((m||d)&&(d=s.window===s?s:(d=s.ownerDocument)?d.defaultView||d.parentWindow:window,m?(v=n.relatedTarget||n.toElement,m=c,v=v?Rl(v):null,v!==null&&(b=vr(v),A=v.tag,v!==b||A!==5&&A!==27&&A!==6)&&(v=null)):(m=null,v=c),m!==v)){if(A=Wg,y="onMouseLeave",h="onMouseEnter",g="mouse",(e==="pointerout"||e==="pointerover")&&(A=Jg,y="onPointerLeave",h="onPointerEnter",g="pointer"),b=m==null?d:Fi(m),p=v==null?d:Fi(v),d=new A(y,g+"leave",m,n,s),d.target=b,d.relatedTarget=p,y=null,Rl(s)===c&&(A=new A(h,g+"enter",v,n,s),A.target=p,A.relatedTarget=b,y=A),b=y,m&&v)t:{for(A=gw,h=m,g=v,p=0,y=h;y;y=A(y))p++;y=0;for(var C=g;C;C=A(C))y++;for(;0<p-y;)h=A(h),p--;for(;0<y-p;)g=A(g),y--;for(;p--;){if(h===g||g!==null&&h===g.alternate){A=h;break t}h=A(h),g=A(g)}A=null}else A=null;m!==null&&Ym(f,d,m,A,!1),v!==null&&b!==null&&Ym(f,b,v,A,!0)}}e:{if(d=c?Fi(c):window,m=d.nodeName&&d.nodeName.toLowerCase(),m==="select"||m==="input"&&d.type==="file")var R=nm;else if(tm(d))if(Gh)R=EA;else{R=RA;var T=CA}else m=d.nodeName,!m||m.toLowerCase()!=="input"||d.type!=="checkbox"&&d.type!=="radio"?c&&vd(c.elementType)&&(R=nm):R=TA;if(R&&(R=R(e,c))){Uh(f,R,n,s);break e}T&&T(e,d,c),e==="focusout"&&c&&d.type==="number"&&c.memoizedProps.value!=null&&xs(d,"number",d.value)}switch(T=c?Fi(c):window,e){case"focusin":(tm(T)||T.contentEditable==="true")&&(Dl=T,Bs=c,Qi=null);break;case"focusout":Qi=Bs=Dl=null;break;case"mousedown":Ns=!0;break;case"contextmenu":case"mouseup":case"dragend":Ns=!1,rm(f,n,s);break;case"selectionchange":if(xA)break;case"keydown":case"keyup":rm(f,n,s)}var M;if(Sd)e:{switch(e){case"compositionstart":var w="onCompositionStart";break e;case"compositionend":w="onCompositionEnd";break e;case"compositionupdate":w="onCompositionUpdate";break e}w=void 0}else El?Hh(e,n)&&(w="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(w="onCompositionStart");w&&(Lh&&n.locale!=="ko"&&(El||w!=="onCompositionStart"?w==="onCompositionEnd"&&El&&(M=kh()):(na=s,Ad="value"in na?na.value:na.textContent,El=!0)),T=gu(c,w),0<T.length&&(w=new Ig(w,e,null,n,s),f.push({event:w,listeners:T}),M?w.data=M:(M=zh(n),M!==null&&(w.data=M)))),(M=vA?bA(e,n):AA(e,n))&&(w=gu(c,"onBeforeInput"),0<w.length&&(T=new Ig("onBeforeInput","beforeinput",null,n,s),f.push({event:T,listeners:w}),T.data=M)),dw(f,e,c,n,s)}Oy(f,t)})}function mr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function gu(e,t){for(var n=t+"Capture",a=[];e!==null;){var l=e,i=l.stateNode;if(l=l.tag,l!==5&&l!==26&&l!==27||i===null||(l=ir(e,n),l!=null&&a.unshift(mr(e,l,i)),l=ir(e,t),l!=null&&a.push(mr(e,l,i))),e.tag===3)return a;e=e.return}return[]}function gw(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Ym(e,t,n,a,l){for(var i=t._reactName,r=[];n!==null&&n!==a;){var o=n,u=o.alternate,c=o.stateNode;if(o=o.tag,u!==null&&u===a)break;o!==5&&o!==26&&o!==27||c===null||(u=c,l?(c=ir(n,i),c!=null&&r.unshift(mr(n,c,u))):l||(c=ir(n,i),c!=null&&r.push(mr(n,c,u)))),n=n.return}r.length!==0&&e.push({event:t,listeners:r})}var mw=/\r\n?/g,hw=/\u0000|\uFFFD/g;function Vm(e){return(typeof e=="string"?e:""+e).replace(mw,``).replace(hw,"")}function Ly(e,t){return t=Vm(t),Vm(e)===t}function ie(e,t,n,a,l,i){switch(n){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||jl(e,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&jl(e,""+a);break;case"className":po(e,"class",a);break;case"tabIndex":po(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":po(e,n,a);break;case"style":Nh(e,a,i);break;case"data":if(t!=="object"){po(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||n!=="href")){e.removeAttribute(n);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Bo(""+a),e.setAttribute(n,a);break;case"action":case"formAction":if(typeof a=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof i=="function"&&(n==="formAction"?(t!=="input"&&ie(e,t,"name",l.name,l,null),ie(e,t,"formEncType",l.formEncType,l,null),ie(e,t,"formMethod",l.formMethod,l,null),ie(e,t,"formTarget",l.formTarget,l,null)):(ie(e,t,"encType",l.encType,l,null),ie(e,t,"method",l.method,l,null),ie(e,t,"target",l.target,l,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Bo(""+a),e.setAttribute(n,a);break;case"onClick":a!=null&&(e.onclick=_n);break;case"onScroll":a!=null&&q("scroll",e);break;case"onScrollEnd":a!=null&&q("scrollend",e);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(S(60));e.innerHTML=n}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}n=Bo(""+a),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""+a):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":a===!0?e.setAttribute(n,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,a):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?e.setAttribute(n,a):e.removeAttribute(n);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(n):e.setAttribute(n,a);break;case"popover":q("beforetoggle",e),q("toggle",e),_o(e,"popover",a);break;case"xlinkActuate":Sn(e,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":Sn(e,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":Sn(e,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":Sn(e,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":Sn(e,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":Sn(e,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":Sn(e,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":Sn(e,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":Sn(e,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":_o(e,"is",a);break;case"innerText":case"textContent":break;default:(!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(n=Vb.get(n)||n,_o(e,n,a))}}function nd(e,t,n,a,l,i){switch(n){case"style":Nh(e,a,i);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(S(60));e.innerHTML=n}}break;case"children":typeof a=="string"?jl(e,a):(typeof a=="number"||typeof a=="bigint")&&jl(e,""+a);break;case"onScroll":a!=null&&q("scroll",e);break;case"onScrollEnd":a!=null&&q("scrollend",e);break;case"onClick":a!=null&&(e.onclick=_n);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Eh.hasOwnProperty(n))e:{if(n[0]==="o"&&n[1]==="n"&&(l=n.endsWith("Capture"),t=n.slice(2,l?n.length-7:void 0),i=e[vt]||null,i=i!=null?i[n]:null,typeof i=="function"&&e.removeEventListener(t,i,l),typeof a=="function")){typeof i!="function"&&i!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,a,l);break e}n in e?e[n]=a:a===!0?e.setAttribute(n,""):_o(e,n,a)}}}function Ke(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":q("error",e),q("load",e);var a=!1,l=!1,i;for(i in n)if(n.hasOwnProperty(i)){var r=n[i];if(r!=null)switch(i){case"src":a=!0;break;case"srcSet":l=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:ie(e,t,i,r,n,null)}}l&&ie(e,t,"srcSet",n.srcSet,n,null),a&&ie(e,t,"src",n.src,n,null);return;case"input":q("invalid",e);var o=i=r=l=null,u=null,c=null;for(a in n)if(n.hasOwnProperty(a)){var s=n[a];if(s!=null)switch(a){case"name":l=s;break;case"type":r=s;break;case"checked":u=s;break;case"defaultChecked":c=s;break;case"value":i=s;break;case"defaultValue":o=s;break;case"children":case"dangerouslySetInnerHTML":if(s!=null)throw Error(S(137,t));break;default:ie(e,t,a,s,n,null)}}Mh(e,i,o,u,c,r,l,!1);return;case"select":q("invalid",e),a=r=i=null;for(l in n)if(n.hasOwnProperty(l)&&(o=n[l],o!=null))switch(l){case"value":i=o;break;case"defaultValue":r=o;break;case"multiple":a=o;default:ie(e,t,l,o,n,null)}t=i,n=r,e.multiple=!!a,t!=null?Ll(e,!!a,t,!1):n!=null&&Ll(e,!!a,n,!0);return;case"textarea":q("invalid",e),i=l=a=null;for(r in n)if(n.hasOwnProperty(r)&&(o=n[r],o!=null))switch(r){case"value":a=o;break;case"defaultValue":l=o;break;case"children":i=o;break;case"dangerouslySetInnerHTML":if(o!=null)throw Error(S(91));break;default:ie(e,t,r,o,n,null)}Bh(e,a,l,i);return;case"option":for(u in n)if(n.hasOwnProperty(u)&&(a=n[u],a!=null))switch(u){case"selected":e.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:ie(e,t,u,a,n,null)}return;case"dialog":q("beforetoggle",e),q("toggle",e),q("cancel",e),q("close",e);break;case"iframe":case"object":q("load",e);break;case"video":case"audio":for(a=0;a<gr.length;a++)q(gr[a],e);break;case"image":q("error",e),q("load",e);break;case"details":q("toggle",e);break;case"embed":case"source":case"link":q("error",e),q("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(c in n)if(n.hasOwnProperty(c)&&(a=n[c],a!=null))switch(c){case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:ie(e,t,c,a,n,null)}return;default:if(vd(t)){for(s in n)n.hasOwnProperty(s)&&(a=n[s],a!==void 0&&nd(e,t,s,a,n,void 0));return}}for(o in n)n.hasOwnProperty(o)&&(a=n[o],a!=null&&ie(e,t,o,a,n,null))}function pw(e,t,n,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,i=null,r=null,o=null,u=null,c=null,s=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case"checked":break;case"value":break;case"defaultValue":u=f;default:a.hasOwnProperty(m)||ie(e,t,m,null,a,f)}}for(var d in a){var m=a[d];if(f=n[d],a.hasOwnProperty(d)&&(m!=null||f!=null))switch(d){case"type":i=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":s=m;break;case"value":r=m;break;case"defaultValue":o=m;break;case"children":case"dangerouslySetInnerHTML":if(m!=null)throw Error(S(137,t));break;default:m!==f&&ie(e,t,d,m,a,f)}}Ds(e,r,o,u,c,s,i,l);return;case"select":m=r=o=d=null;for(i in n)if(u=n[i],n.hasOwnProperty(i)&&u!=null)switch(i){case"value":break;case"multiple":m=u;default:a.hasOwnProperty(i)||ie(e,t,i,null,a,u)}for(l in a)if(i=a[l],u=n[l],a.hasOwnProperty(l)&&(i!=null||u!=null))switch(l){case"value":d=i;break;case"defaultValue":o=i;break;case"multiple":r=i;default:i!==u&&ie(e,t,l,i,a,u)}t=o,n=r,a=m,d!=null?Ll(e,!!n,d,!1):!!a!=!!n&&(t!=null?Ll(e,!!n,t,!0):Ll(e,!!n,n?[]:"",!1));return;case"textarea":m=d=null;for(o in n)if(l=n[o],n.hasOwnProperty(o)&&l!=null&&!a.hasOwnProperty(o))switch(o){case"value":break;case"children":break;default:ie(e,t,o,null,a,l)}for(r in a)if(l=a[r],i=n[r],a.hasOwnProperty(r)&&(l!=null||i!=null))switch(r){case"value":d=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(l!=null)throw Error(S(91));break;default:l!==i&&ie(e,t,r,l,a,i)}_h(e,d,m);return;case"option":for(var v in n)if(d=n[v],n.hasOwnProperty(v)&&d!=null&&!a.hasOwnProperty(v))switch(v){case"selected":e.selected=!1;break;default:ie(e,t,v,null,a,d)}for(u in a)if(d=a[u],m=n[u],a.hasOwnProperty(u)&&d!==m&&(d!=null||m!=null))switch(u){case"selected":e.selected=d&&typeof d!="function"&&typeof d!="symbol";break;default:ie(e,t,u,d,a,m)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var A in n)d=n[A],n.hasOwnProperty(A)&&d!=null&&!a.hasOwnProperty(A)&&ie(e,t,A,null,a,d);for(c in a)if(d=a[c],m=n[c],a.hasOwnProperty(c)&&d!==m&&(d!=null||m!=null))switch(c){case"children":case"dangerouslySetInnerHTML":if(d!=null)throw Error(S(137,t));break;default:ie(e,t,c,d,a,m)}return;default:if(vd(t)){for(var b in n)d=n[b],n.hasOwnProperty(b)&&d!==void 0&&!a.hasOwnProperty(b)&&nd(e,t,b,void 0,a,d);for(s in a)d=a[s],m=n[s],!a.hasOwnProperty(s)||d===m||d===void 0&&m===void 0||nd(e,t,s,d,a,m);return}}for(var h in n)d=n[h],n.hasOwnProperty(h)&&d!=null&&!a.hasOwnProperty(h)&&ie(e,t,h,null,a,d);for(f in a)d=a[f],m=n[f],!a.hasOwnProperty(f)||d===m||d==null&&m==null||ie(e,t,f,d,a,m)}function Xm(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function yw(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),a=0;a<n.length;a++){var l=n[a],i=l.transferSize,r=l.initiatorType,o=l.duration;if(i&&o&&Xm(r)){for(r=0,o=l.responseEnd,a+=1;a<n.length;a++){var u=n[a],c=u.startTime;if(c>o)break;var s=u.transferSize,f=u.initiatorType;s&&Xm(f)&&(u=u.responseEnd,r+=s*(u<o?1:(o-c)/(u-c)))}if(--a,t+=8*(i+r)/(l.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var ad=null,ld=null;function mu(e){return e.nodeType===9?e:e.ownerDocument}function Qm(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Hy(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function id(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var hs=null;function vw(){var e=window.event;return e&&e.type==="popstate"?e===hs?!1:(hs=e,!0):(hs=null,!1)}var zy=typeof setTimeout=="function"?setTimeout:void 0,bw=typeof clearTimeout=="function"?clearTimeout:void 0,Km=typeof Promise=="function"?Promise:void 0,Aw=typeof queueMicrotask=="function"?queueMicrotask:typeof Km<"u"?function(e){return Km.resolve(null).then(e).catch(ww)}:zy;function ww(e){setTimeout(function(){throw e})}function Aa(e){return e==="head"}function Zm(e,t){var n=t,a=0;do{var l=n.nextSibling;if(e.removeChild(n),l&&l.nodeType===8)if(n=l.data,n==="/$"||n==="/&"){if(a===0){e.removeChild(l),Il(t);return}a--}else if(n==="$"||n==="$?"||n==="$~"||n==="$!"||n==="&")a++;else if(n==="html")ar(e.ownerDocument.documentElement);else if(n==="head"){n=e.ownerDocument.head,ar(n);for(var i=n.firstChild;i;){var r=i.nextSibling,o=i.nodeName;i[Sr]||o==="SCRIPT"||o==="STYLE"||o==="LINK"&&i.rel.toLowerCase()==="stylesheet"||n.removeChild(i),i=r}}else n==="body"&&ar(e.ownerDocument.body);n=l}while(n);Il(t)}function Wm(e,t){var n=e;e=0;do{var a=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),a&&a.nodeType===8)if(n=a.data,n==="/$"){if(e===0)break;e--}else n!=="$"&&n!=="$?"&&n!=="$~"&&n!=="$!"||e++;n=a}while(n)}function rd(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":rd(n),yd(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function Sw(e,t,n,a){for(;e.nodeType===1;){var l=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[Sr])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(i=e.getAttribute("rel"),i==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(i!==l.rel||e.getAttribute("href")!==(l.href==null||l.href===""?null:l.href)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin)||e.getAttribute("title")!==(l.title==null?null:l.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(i=e.getAttribute("src"),(i!==(l.src==null?null:l.src)||e.getAttribute("type")!==(l.type==null?null:l.type)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin))&&i&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var i=l.name==null?null:""+l.name;if(l.type==="hidden"&&e.getAttribute("name")===i)return e}else return e;if(e=Qt(e.nextSibling),e===null)break}return null}function Cw(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=Qt(e.nextSibling),e===null))return null;return e}function Uy(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=Qt(e.nextSibling),e===null))return null;return e}function od(e){return e.data==="$?"||e.data==="$~"}function ud(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function Rw(e,t){var n=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||n.readyState!=="loading")t();else{var a=function(){t(),n.removeEventListener("DOMContentLoaded",a)};n.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function Qt(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var cd=null;function Im(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"||n==="/&"){if(t===0)return Qt(e.nextSibling);t--}else n!=="$"&&n!=="$!"&&n!=="$?"&&n!=="$~"&&n!=="&"||t++}e=e.nextSibling}return null}function Jm(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"){if(t===0)return e;t--}else n!=="/$"&&n!=="/&"||t++}e=e.previousSibling}return null}function Gy(e,t,n){switch(t=mu(n),e){case"html":if(e=t.documentElement,!e)throw Error(S(452));return e;case"head":if(e=t.head,!e)throw Error(S(453));return e;case"body":if(e=t.body,!e)throw Error(S(454));return e;default:throw Error(S(451))}}function ar(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);yd(e)}var Kt=new Map,$m=new Set;function hu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Pn=$.d;$.d={f:Tw,r:Ew,D:Dw,C:xw,L:Mw,m:_w,X:Nw,S:Bw,M:Ow};function Tw(){var e=Pn.f(),t=Nu();return e||t}function Ew(e){var t=$l(e);t!==null&&t.tag===5&&t.type==="form"?Np(t):Pn.r(e)}var ai=typeof document>"u"?null:document;function Py(e,t,n){var a=ai;if(a&&typeof t=="string"&&t){var l=jt(t);l='link[rel="'+e+'"][href="'+l+'"]',typeof n=="string"&&(l+='[crossorigin="'+n+'"]'),$m.has(l)||($m.add(l),e={rel:e,crossOrigin:n,href:t},a.querySelector(l)===null&&(t=a.createElement("link"),Ke(t,"link",e),qe(t),a.head.appendChild(t)))}}function Dw(e){Pn.D(e),Py("dns-prefetch",e,null)}function xw(e,t){Pn.C(e,t),Py("preconnect",e,t)}function Mw(e,t,n){Pn.L(e,t,n);var a=ai;if(a&&e&&t){var l='link[rel="preload"][as="'+jt(t)+'"]';t==="image"&&n&&n.imageSrcSet?(l+='[imagesrcset="'+jt(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(l+='[imagesizes="'+jt(n.imageSizes)+'"]')):l+='[href="'+jt(e)+'"]';var i=l;switch(t){case"style":i=Wl(e);break;case"script":i=li(e)}Kt.has(i)||(e=ve({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Kt.set(i,e),a.querySelector(l)!==null||t==="style"&&a.querySelector(xr(i))||t==="script"&&a.querySelector(Mr(i))||(t=a.createElement("link"),Ke(t,"link",e),qe(t),a.head.appendChild(t)))}}function _w(e,t){Pn.m(e,t);var n=ai;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",l='link[rel="modulepreload"][as="'+jt(a)+'"][href="'+jt(e)+'"]',i=l;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=li(e)}if(!Kt.has(i)&&(e=ve({rel:"modulepreload",href:e},t),Kt.set(i,e),n.querySelector(l)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(Mr(i)))return}a=n.createElement("link"),Ke(a,"link",e),qe(a),n.head.appendChild(a)}}}function Bw(e,t,n){Pn.S(e,t,n);var a=ai;if(a&&e){var l=kl(a).hoistableStyles,i=Wl(e);t=t||"default";var r=l.get(i);if(!r){var o={loading:0,preload:null};if(r=a.querySelector(xr(i)))o.loading=5;else{e=ve({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Kt.get(i))&&nf(e,n);var u=r=a.createElement("link");qe(u),Ke(u,"link",e),u._p=new Promise(function(c,s){u.onload=c,u.onerror=s}),u.addEventListener("load",function(){o.loading|=1}),u.addEventListener("error",function(){o.loading|=2}),o.loading|=4,qo(r,t,a)}r={type:"stylesheet",instance:r,count:1,state:o},l.set(i,r)}}}function Nw(e,t){Pn.X(e,t);var n=ai;if(n&&e){var a=kl(n).hoistableScripts,l=li(e),i=a.get(l);i||(i=n.querySelector(Mr(l)),i||(e=ve({src:e,async:!0},t),(t=Kt.get(l))&&af(e,t),i=n.createElement("script"),qe(i),Ke(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function Ow(e,t){Pn.M(e,t);var n=ai;if(n&&e){var a=kl(n).hoistableScripts,l=li(e),i=a.get(l);i||(i=n.querySelector(Mr(l)),i||(e=ve({src:e,async:!0,type:"module"},t),(t=Kt.get(l))&&af(e,t),i=n.createElement("script"),qe(i),Ke(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function eh(e,t,n,a){var l=(l=ra.current)?hu(l):null;if(!l)throw Error(S(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=Wl(n.href),n=kl(l).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=Wl(n.href);var i=kl(l).hoistableStyles,r=i.get(e);if(r||(l=l.ownerDocument||l,r={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(e,r),(i=l.querySelector(xr(e)))&&!i._p&&(r.instance=i,r.state.loading=5),Kt.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Kt.set(e,n),i||kw(l,e,n,r.state))),t&&a===null)throw Error(S(528,""));return r}if(t&&a!==null)throw Error(S(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=li(n),n=kl(l).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(S(444,e))}}function Wl(e){return'href="'+jt(e)+'"'}function xr(e){return'link[rel="stylesheet"]['+e+"]"}function qy(e){return ve({},e,{"data-precedence":e.precedence,precedence:null})}function kw(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Ke(t,"link",n),qe(t),e.head.appendChild(t))}function li(e){return'[src="'+jt(e)+'"]'}function Mr(e){return"script[async]"+e}function th(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+jt(n.href)+'"]');if(a)return t.instance=a,qe(a),a;var l=ve({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),qe(a),Ke(a,"style",l),qo(a,n.precedence,e),t.instance=a;case"stylesheet":l=Wl(n.href);var i=e.querySelector(xr(l));if(i)return t.state.loading|=4,t.instance=i,qe(i),i;a=qy(n),(l=Kt.get(l))&&nf(a,l),i=(e.ownerDocument||e).createElement("link"),qe(i);var r=i;return r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ke(i,"link",a),t.state.loading|=4,qo(i,n.precedence,e),t.instance=i;case"script":return i=li(n.src),(l=e.querySelector(Mr(i)))?(t.instance=l,qe(l),l):(a=n,(l=Kt.get(i))&&(a=ve({},n),af(a,l)),e=e.ownerDocument||e,l=e.createElement("script"),qe(l),Ke(l,"link",a),e.head.appendChild(l),t.instance=l);case"void":return null;default:throw Error(S(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,qo(a,n.precedence,e));return t.instance}function qo(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=a.length?a[a.length-1]:null,i=l,r=0;r<a.length;r++){var o=a[r];if(o.dataset.precedence===t)i=o;else if(i!==l)break}i?i.parentNode.insertBefore(e,i.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function nf(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function af(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var Fo=null;function nh(e,t,n){if(Fo===null){var a=new Map,l=Fo=new Map;l.set(n,a)}else l=Fo,a=l.get(n),a||(a=new Map,l.set(n,a));if(a.has(e))return a;for(a.set(e,null),n=n.getElementsByTagName(e),l=0;l<n.length;l++){var i=n[l];if(!(i[Sr]||i[Ve]||e==="link"&&i.getAttribute("rel")==="stylesheet")&&i.namespaceURI!=="http://www.w3.org/2000/svg"){var r=i.getAttribute(t)||"";r=e+r;var o=a.get(r);o?o.push(i):a.set(r,[i])}}return a}function ah(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function Lw(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Fy(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Hw(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var l=Wl(a.href),i=t.querySelector(xr(l));if(i){t=i._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=pu.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=i,qe(i);return}i=t.ownerDocument||t,a=qy(a),(l=Kt.get(l))&&nf(a,l),i=i.createElement("link"),qe(i);var r=i;r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ke(i,"link",a),n.instance=i}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=pu.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var ps=0;function zw(e,t){return e.stylesheets&&e.count===0&&jo(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var a=setTimeout(function(){if(e.stylesheets&&jo(e,e.stylesheets),e.unsuspend){var i=e.unsuspend;e.unsuspend=null,i()}},6e4+t);0<e.imgBytes&&ps===0&&(ps=62500*yw());var l=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&jo(e,e.stylesheets),e.unsuspend)){var i=e.unsuspend;e.unsuspend=null,i()}},(e.imgBytes>ps?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(l)}}:null}function pu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)jo(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var yu=null;function jo(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,yu=new Map,t.forEach(Uw,e),yu=null,pu.call(e))}function Uw(e,t){if(!(t.state.loading&4)){var n=yu.get(e);if(n)var a=n.get(null);else{n=new Map,yu.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i<l.length;i++){var r=l[i];(r.nodeName==="LINK"||r.getAttribute("media")!=="not all")&&(n.set(r.dataset.precedence,r),a=r)}a&&n.set(null,a)}l=t.instance,r=l.getAttribute("data-precedence"),i=n.get(r)||a,i===a&&n.set(null,l),n.set(r,l),this.count++,a=pu.bind(this),l.addEventListener("load",a),l.addEventListener("error",a),i?i.parentNode.insertBefore(l,i.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(l,e.firstChild)),t.state.loading|=4}}var hr={$$typeof:Mn,Provider:null,Consumer:null,_currentValue:za,_currentValue2:za,_threadCount:0};function Gw(e,t,n,a,l,i,r,o,u){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Fc(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fc(0),this.hiddenUpdates=Fc(null),this.identifierPrefix=a,this.onUncaughtError=l,this.onCaughtError=i,this.onRecoverableError=r,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=u,this.incompleteTransitions=new Map}function jy(e,t,n,a,l,i,r,o,u,c,s,f){return e=new Gw(e,t,n,r,u,c,s,f,o),t=1,i===!0&&(t|=24),i=Tt(3,null,null,t),e.current=i,i.stateNode=e,t=Md(),t.refCount++,e.pooledCache=t,t.refCount++,i.memoizedState={element:a,isDehydrated:n,cache:t},Nd(i),e}function Yy(e){return e?(e=_l,e):_l}function Vy(e,t,n,a,l,i){l=Yy(l),a.context===null?a.context=l:a.pendingContext=l,a=ua(t),a.payload={element:n},i=i===void 0?null:i,i!==null&&(a.callback=i),n=ca(e,a,t),n!==null&&(yt(n,e,t),Zi(n,e,t))}function lh(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function lf(e,t){lh(e,t),(e=e.alternate)&&lh(e,t)}function Xy(e){if(e.tag===13||e.tag===31){var t=Wa(e,67108864);t!==null&&yt(t,e,67108864),lf(e,67108864)}}function ih(e){if(e.tag===13||e.tag===31){var t=_t();t=hd(t);var n=Wa(e,t);n!==null&&yt(n,e,t),lf(e,t)}}var vu=!0;function Pw(e,t,n,a){var l=L.T;L.T=null;var i=$.p;try{$.p=2,rf(e,t,n,a)}finally{$.p=i,L.T=l}}function qw(e,t,n,a){var l=L.T;L.T=null;var i=$.p;try{$.p=8,rf(e,t,n,a)}finally{$.p=i,L.T=l}}function rf(e,t,n,a){if(vu){var l=sd(a);if(l===null)ms(e,t,a,bu,n),rh(e,a);else if(jw(l,e,t,n,a))a.stopPropagation();else if(rh(e,a),t&4&&-1<Fw.indexOf(e)){for(;l!==null;){var i=$l(l);if(i!==null)switch(i.tag){case 3:if(i=i.stateNode,i.current.memoizedState.isDehydrated){var r=ka(i.pendingLanes);if(r!==0){var o=i;for(o.pendingLanes|=2,o.entangledLanes|=2;r;){var u=1<<31-Mt(r);o.entanglements[1]|=u,r&=~u}hn(i),(J&6)===0&&(uu=Dt()+500,Dr(0,!1))}}break;case 31:case 13:o=Wa(i,2),o!==null&&yt(o,i,2),Nu(),lf(i,2)}if(i=sd(a),i===null&&ms(e,t,a,bu,n),i===l)break;l=i}l!==null&&a.stopPropagation()}else ms(e,t,a,null,n)}}function sd(e){return e=bd(e),of(e)}var bu=null;function of(e){if(bu=null,e=Rl(e),e!==null){var t=vr(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=fh(t),e!==null)return e;e=null}else if(n===31){if(e=gh(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return bu=e,null}function Qy(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Mb()){case yh:return 2;case vh:return 8;case Ko:case _b:return 32;case bh:return 268435456;default:return 32}default:return 32}}var dd=!1,fa=null,ga=null,ma=null,pr=new Map,yr=new Map,ea=[],Fw="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function rh(e,t){switch(e){case"focusin":case"focusout":fa=null;break;case"dragenter":case"dragleave":ga=null;break;case"mouseover":case"mouseout":ma=null;break;case"pointerover":case"pointerout":pr.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":yr.delete(t.pointerId)}}function Ui(e,t,n,a,l,i){return e===null||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:i,targetContainers:[l]},t!==null&&(t=$l(t),t!==null&&Xy(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,l!==null&&t.indexOf(l)===-1&&t.push(l),e)}function jw(e,t,n,a,l){switch(t){case"focusin":return fa=Ui(fa,e,t,n,a,l),!0;case"dragenter":return ga=Ui(ga,e,t,n,a,l),!0;case"mouseover":return ma=Ui(ma,e,t,n,a,l),!0;case"pointerover":var i=l.pointerId;return pr.set(i,Ui(pr.get(i)||null,e,t,n,a,l)),!0;case"gotpointercapture":return i=l.pointerId,yr.set(i,Ui(yr.get(i)||null,e,t,n,a,l)),!0}return!1}function Ky(e){var t=Rl(e.target);if(t!==null){var n=vr(t);if(n!==null){if(t=n.tag,t===13){if(t=fh(n),t!==null){e.blockedOn=t,jg(e.priority,function(){ih(n)});return}}else if(t===31){if(t=gh(n),t!==null){e.blockedOn=t,jg(e.priority,function(){ih(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Yo(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=sd(e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);Ms=a,n.target.dispatchEvent(a),Ms=null}else return t=$l(n),t!==null&&Xy(t),e.blockedOn=n,!1;t.shift()}return!0}function oh(e,t,n){Yo(e)&&n.delete(t)}function Yw(){dd=!1,fa!==null&&Yo(fa)&&(fa=null),ga!==null&&Yo(ga)&&(ga=null),ma!==null&&Yo(ma)&&(ma=null),pr.forEach(oh),yr.forEach(oh)}function xo(e,t){e.blockedOn===t&&(e.blockedOn=null,dd||(dd=!0,Ge.unstable_scheduleCallback(Ge.unstable_NormalPriority,Yw)))}var Mo=null;function uh(e){Mo!==e&&(Mo=e,Ge.unstable_scheduleCallback(Ge.unstable_NormalPriority,function(){Mo===e&&(Mo=null);for(var t=0;t<e.length;t+=3){var n=e[t],a=e[t+1],l=e[t+2];if(typeof a!="function"){if(of(a||n)===null)continue;break}var i=$l(n);i!==null&&(e.splice(t,3),t-=3,Vs(i,{pending:!0,data:l,method:n.method,action:a},a,l))}}))}function Il(e){function t(u){return xo(u,e)}fa!==null&&xo(fa,e),ga!==null&&xo(ga,e),ma!==null&&xo(ma,e),pr.forEach(t),yr.forEach(t);for(var n=0;n<ea.length;n++){var a=ea[n];a.blockedOn===e&&(a.blockedOn=null)}for(;0<ea.length&&(n=ea[0],n.blockedOn===null);)Ky(n),n.blockedOn===null&&ea.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(a=0;a<n.length;a+=3){var l=n[a],i=n[a+1],r=l[vt]||null;if(typeof i=="function")r||uh(n);else if(r){var o=null;if(i&&i.hasAttribute("formAction")){if(l=i,r=i[vt]||null)o=r.formAction;else if(of(l)!==null)continue}else o=r.action;typeof o=="function"?n[a+1]=o:(n.splice(a,3),a-=3),uh(n)}}}function Zy(){function e(i){i.canIntercept&&i.info==="react-transition"&&i.intercept({handler:function(){return new Promise(function(r){return l=r})},focusReset:"manual",scroll:"manual"})}function t(){l!==null&&(l(),l=null),a||setTimeout(n,20)}function n(){if(!a&&!navigation.transition){var i=navigation.currentEntry;i&&i.url!=null&&navigation.navigate(i.url,{state:i.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,l=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){a=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),l!==null&&(l(),l=null)}}}function uf(e){this._internalRoot=e}Lu.prototype.render=uf.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(S(409));var n=t.current,a=_t();Vy(n,a,e,t,null,null)};Lu.prototype.unmount=uf.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;Vy(e.current,2,null,e,null,null),Nu(),t[Jl]=null}};function Lu(e){this._internalRoot=e}Lu.prototype.unstable_scheduleHydration=function(e){if(e){var t=Rh();e={blockedOn:null,target:e,priority:t};for(var n=0;n<ea.length&&t!==0&&t<ea[n].priority;n++);ea.splice(n,0,e),n===0&&Ky(e)}};var ch=sh.version;if(ch!=="19.2.8")throw Error(S(527,ch,"19.2.8"));$.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(S(188)):(e=Object.keys(e).join(","),Error(S(268,e)));return e=Sb(t),e=e!==null?mh(e):null,e=e===null?null:e.stateNode,e};var Vw={bundleType:0,version:"19.2.8",rendererPackageName:"react-dom",currentDispatcherRef:L,reconcilerVersion:"19.2.8"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Gi=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Gi.isDisabled&&Gi.supportsFiber))try{br=Gi.inject(Vw),xt=Gi}catch{}var Gi;Hu.createRoot=function(e,t){if(!dh(e))throw Error(S(299));var n=!1,a="",l=Pp,i=qp,r=Fp;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(l=t.onUncaughtError),t.onCaughtError!==void 0&&(i=t.onCaughtError),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=jy(e,1,!1,null,null,n,a,null,l,i,r,Zy),e[Jl]=t.current,tf(e),new uf(t)};Hu.hydrateRoot=function(e,t,n){if(!dh(e))throw Error(S(299));var a=!1,l="",i=Pp,r=qp,o=Fp,u=null;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onUncaughtError!==void 0&&(i=n.onUncaughtError),n.onCaughtError!==void 0&&(r=n.onCaughtError),n.onRecoverableError!==void 0&&(o=n.onRecoverableError),n.formState!==void 0&&(u=n.formState)),t=jy(e,1,!0,t,n??null,a,l,u,i,r,o,Zy),t.context=Yy(null),n=t.current,a=_t(),a=hd(a),l=ua(a),l.callback=null,ca(n,l,a),n=a,t.current.lanes=n,wr(t,n),hn(t),e[Jl]=t.current,tf(e),new Lu(t)};Hu.version="19.2.8"});var $y=un((jS,Jy)=>{"use strict";function Iy(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Iy)}catch(e){console.error(e)}}Iy(),Jy.exports=Wy()});var t0=un(zu=>{"use strict";var Xw=Symbol.for("react.transitional.element"),Qw=Symbol.for("react.fragment");function e0(e,t,n){var a=null;if(n!==void 0&&(a=""+n),t.key!==void 0&&(a=""+t.key),"key"in t){n={};for(var l in t)l!=="key"&&(n[l]=t[l])}else n=t;return t=n.ref,{$$typeof:Xw,type:e,key:a,ref:t!==void 0?t:null,props:n}}zu.Fragment=Qw;zu.jsx=e0;zu.jsxs=e0});var O=un((VS,n0)=>{"use strict";n0.exports=t0()});var Lt=B(ft(),1),s1=B($y(),1);var Wv=B(ft(),1);var qn=B(O(),1);function Kw(e){return{under50:"Under $50",over50:"Over $50",over30:"Over $30",over500:"Over $500","50_100":"$50 - $100","100_200":"$100 - $200","200_500":"$200 - $500"}[e]||e}function a0({activeDealTag:e,activeFreeformTags:t,airedaleTags:n,freeformTags:a,discountAmount:l,onBrandSelect:i,onBrandToggle:r,onDiscountAmountChange:o,onPriceRangeChange:u,onTagClear:c,onFreeformTagClear:s,onFreeformTagToggle:f,priceRange:d,selectedBrands:m}){let v=m.map(b=>({type:"brand",value:b,label:b}));if(e){let b=n.find(h=>h.startsWith(e+":::")||h===e);v.push({type:"category",value:e,label:b?b.split(":::")[1]||b.split(":::")[0]:e})}if(t.forEach(b=>{let h=a.find(g=>g.handle===b);v.push({type:"freeform-tag",value:b,label:h?.label||b})}),d&&d!=="all"&&v.push({type:"price",value:d,label:Kw(d)}),l&&l!=="0"&&l!=="all"&&v.push({type:"discount",value:l,label:`Min ${l}% off`}),v.length===0)return null;let A=b=>{b.type==="brand"&&r?.(b.value),b.type==="category"&&c(),b.type==="freeform-tag"&&f(b.value),b.type==="discount"&&o?.("0"),b.type==="price"&&u?.("all")};return(0,qn.jsxs)("div",{className:"tg-df-active-badges-row",style:{display:"flex",flexWrap:"wrap",gap:"4px",alignItems:"center",marginTop:"10px",marginBottom:"16px"},children:[v.map(b=>(0,qn.jsxs)("span",{className:"tg-df-active-badge",children:[b.label,(0,qn.jsx)("button",{type:"button",className:"tg-df-badge-remove","aria-label":`Remove ${b.label}`,onClick:()=>A(b),children:(0,qn.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,qn.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,qn.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},b.type+"-"+b.value)),v.length>1&&(0,qn.jsx)("button",{type:"button",className:"tg-df-badge-clear-all",onClick:()=>{i?.([]),c(),s(),o?.("0"),u?.("all")},children:"Clear all"})]})}function l0(e){if(!e)return null;let t=e.documentname||e.title||"";!t&&e.documentnametext&&(t=Array.isArray(e.documentnametext)?e.documentnametext[0]:e.documentnametext),!t&&e.articlename&&(t=Array.isArray(e.articlename)?e.articlename[0]:e.articlename),!t&&e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&(t=e.articlesocialtitle[0]);let n=e.strapline||e.articlestrapline||e.subtitle||e.dek||"";!n&&e.image_thumbnail&&e.image_thumbnail.dek&&(n=e.image_thumbnail.dek),Array.isArray(n)&&(n=n[0]||"");let a="";if(e.articlepage)try{let l=e.articlepage;if(typeof l=="string")try{l=JSON.parse(l)}catch{}if(Array.isArray(l)&&l.length>0){let i=l[0];if(typeof i=="string")try{i=JSON.parse(i)}catch{}if(Array.isArray(i)){let r=[];for(let o of i){if(o.type==="featured-product")break;if(o.type==="text"&&o.data)Array.isArray(o.data.paragraphs)?o.data.paragraphs.forEach(u=>{u&&r.push(u.startsWith("<")?u:`<p>${u}<\/p>`)}):typeof o.data.text=="string"&&o.data.text&&r.push(o.data.text.startsWith("<")?o.data.text:`<p>${o.data.text}<\/p>`);else if(o.type==="section"&&o.data){let u=o.data.text||o.data.heading||o.data.title||"";u&&r.push(`<div class="tg-df-article-section-banner"><span>${u}<\/span><\/div>`)}}r.length>0&&(a=r.join(""))}}}catch(l){console.error("Error parsing articlepage",l)}return!a&&e.content?a=typeof e.content=="string"?e.content:"":!a&&e.intro?a=typeof e.intro=="string"?e.intro:"":!a&&e.paragraphs&&(a=(Array.isArray(e.paragraphs)?e.paragraphs:[e.paragraphs]).map(i=>`<p>${i}<\/p>`).join("")),{headline:t,strapline:n,contentHtml:a}}var ii=B(O(),1);function i0({articles:e,selectedArticleId:t}){if(!t)return null;let n=e.find(l=>l.id===t);if(!n)return null;let a=l0(n);return!a||!a.headline&&!a.strapline&&!a.contentHtml?null:(0,ii.jsxs)("div",{className:"tg-df-article-intro-container",id:"tg-df-article-intro",style:{margin:"0 auto 32px",width:"100%",maxWidth:"800px",textAlign:"left",padding:"0 16px"},children:[a.headline&&(0,ii.jsx)("h2",{className:"tg-df-article-headline",id:"tg-df-article-headline",style:{fontSize:"1.75rem",fontWeight:800,color:"#0f172a",marginBottom:"1rem",lineHeight:1.25},children:a.headline}),a.strapline&&(0,ii.jsx)("p",{className:"tg-df-article-strapline",id:"tg-df-article-strapline",style:{fontSize:"1.125rem",fontWeight:600,color:"#334155",marginBottom:"1.25rem",lineHeight:1.4},children:a.strapline}),a.contentHtml&&(0,ii.jsx)("div",{className:"tg-df-article-content",id:"tg-df-article-content",dangerouslySetInnerHTML:{__html:a.contentHtml}})]})}var Fn=B(O(),1);function Zw({articles:e,authorHandle:t,authorName:n}){let a=n||e.length>0&&(e[0].articleauthortext?.[0]||e[0].articleauthor?.[0])||"Author";(t==="all-authors"||n==="all-authors"||n==="All authors")&&(a="All authors");let l=a.trim().split(" ")[0]||"Author";return a==="All authors"&&(l="All authors"),`Shop all ${l==="All authors"?"authors'":l.endsWith("'s")||l.endsWith("\u2019s")?l:`${l}'s`} collections`}function Ww(e){let t=[];return e.documentnametext&&t.push(e.documentnametext),e.documentname&&t.push(e.documentname),e.articlename&&t.push(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&t.push(...e.articlesocialtitle),t.length>0?t.reduce((n,a)=>a&&a.length<n.length?a:n,t[0]):"Article"}function r0({articles:e,authorHandle:t,authorName:n,onChange:a,selectedArticleId:l,shortenedHeadlines:i}){return(0,Fn.jsx)("div",{className:"tg-df-top-bar",id:"tg-df-top-bar",style:{position:"relative",zIndex:100,margin:"0 auto 20px",width:"100%",display:"flex",justifyContent:"center"},children:(0,Fn.jsxs)("div",{className:"tg-df-sort-wrapper",style:{width:"auto",maxWidth:"320px",display:"inline-flex",position:"relative"},children:[(0,Fn.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",style:{position:"absolute",left:"14px",top:"50%",transform:"translateY(-50%)",width:"14px",height:"14px",color:"var(--tg-df-text-muted)",pointerEvents:"none",zIndex:2},children:(0,Fn.jsx)("path",{d:"M12 2l-10 4.5 10 4.5 10-4.5-10-4.5zm0 6.5l-8-3.6 8-3.6 8 3.6-8 3.6zm-10 6l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5zm0 5l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5z"})}),(0,Fn.jsxs)("select",{className:"tg-df-filter-select tg-df-article-select",style:{width:"100%",maxWidth:"320px",padding:"10px 36px 10px 38px",fontSize:"14px",fontWeight:500,borderRadius:"100px",border:"1px solid var(--tg-df-border)",color:"var(--tg-df-text)",backgroundColor:"var(--tg-df-bg-secondary)",appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 14px center",textAlign:"left",textAlignLast:"left",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",cursor:"pointer"},value:l||"",onChange:r=>a(r.target.value),children:[(0,Fn.jsx)("option",{value:"",style:{textAlign:"left"},children:Zw({articles:e,authorHandle:t,authorName:n})}),e.map(r=>{let o=i?.[r.id]||Ww(r);return o&&o.length>38&&(o=o.substring(0,36)+"\u2026"),(0,Fn.jsx)("option",{value:r.id,style:{textAlign:"left"},children:o},r.id)})]})]})})}var A0=B(ft(),1);function o0(e,t=new Date){if(!e)return"";let n=new Date(e),a=Math.floor((t.getTime()-n.getTime())/1e3);if(a<60)return"Just now";let l=Math.floor(a/60);if(l<60)return`${l} min${l>1?"s":""} ago`;let i=Math.floor(l/60);if(i<24)return`${i} hr${i>1?"s":""} ago`;let r=Math.floor(i/24);if(r<30)return`${r} day${r>1?"s":""} ago`;let o=Math.floor(r/30);if(o<12)return`${o} mo${o>1?"s":""} ago`;let u=Math.floor(r/365);return`${u} yr${u>1?"s":""} ago`}function Iw(e){return e.replace(/<\/p\s*>/gi," ").replace(/<p[^>]*>/gi," ").replace(/<br\s*\/?>/gi," ").replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}function _r(e,t,n){let a="";return n==="short"?a=e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"":a=e.articleauthorlongbio&&e.articleauthorlongbio[t]&&e.articleauthorlongbio[t]!=="null"?e.articleauthorlongbio[t]:e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"",a?Iw(a):""}function u0(e,t){return e.articleauthorrole&&e.articleauthorrole[t]&&e.articleauthorrole[t]!=="null"?e.articleauthorrole[t]:""}function c0(e,t){return e.articleauthormedia&&e.articleauthormedia[t]?e.articleauthormedia[t]:""}function ri(e){if(typeof e!="string"||!e.trim())return"";try{let t=new URL(e);if(t.hostname.toLowerCase()!=="cdn.mos.cms.futurecdn.net")return e;let n=/\.(?:jpe?g|png|webp)$/i;return!n.test(t.pathname)||/-\d+-\d+\.(?:jpe?g|png|webp)$/i.test(t.pathname)?e:(t.pathname=t.pathname.replace(n,"-480-80$&"),t.toString())}catch{return e}}function Uu(e,t=0){if(!e||!e.articleauthorsocialnetworks)return[];let n=e.articleauthorsocialnetworks[t];if(n||(n=e.articleauthorsocialnetworks[0]),!n)return[];let a=null;if(typeof n=="string")try{a=JSON.parse(n)}catch{try{a=JSON.parse(n.replace(/\\"/g,'"'))}catch{}}else typeof n=="object"&&n!==null&&(a=n);if(!a||typeof a!="object")return[];let l=[];for(let[i,r]of Object.entries(a)){if(!r)continue;let o="",u="";if(typeof r=="string"?o=r:typeof r=="object"&&r!==null&&(o=r.url||r.address||r.link||"",u=r.address||""),!o&&!u)continue;let c=i.toLowerCase().trim(),s=o||u;c==="email"?s.startsWith("mailto:")||(s=s.includes("@")?`mailto:${s}`:`mailto:${s}`):!s.startsWith("http://")&&!s.startsWith("https://")&&!s.startsWith("//")&&(s=`https://${s}`);let f=c.charAt(0).toUpperCase()+c.slice(1);c==="linkedin"?f="LinkedIn":c==="youtube"?f="YouTube":c==="tiktok"?f="TikTok":c==="twitch"?f="Twitch":c==="steam"?f="Steam":c==="github"?f="GitHub":c==="rss"?f="RSS":(c==="x"||c==="twitter")&&(f="X (Twitter)"),l.push({key:c,href:s,label:f})}return l}function ee(e){if(!e)return"";let t=String(e);for(let n=0;n<3;n+=1){let a=t.replace(/&/gi,"&").replace(/£/g,"\xA3").replace(/£/gi,"\xA3").replace(/$/g,"$").replace(/&dollar;/gi,"$").replace(/€/g,"\u20AC").replace(/€/gi,"\u20AC").replace(/&#(\d+);/g,(l,i)=>String.fromCharCode(Number(i))).replace(/&#x([0-9a-f]+);/gi,(l,i)=>String.fromCharCode(parseInt(i,16)));if(a===t)break;t=a}return t}var Ee=B(O(),1);function cf({authorUrl:e,deal:t}){if(!t.authorName)return null;let n=ee(String(t.authorName)),a=t.authorRole&&!["null","nul","undefined"].includes(String(t.authorRole).toLowerCase())?` \u2022 ${ee(String(t.authorRole))}`:"";return(0,Ee.jsx)("div",{className:"tg-df-author-line-desktop",style:{padding:"0 0 12px 0"},children:(0,Ee.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[t.authorImage&&(0,Ee.jsx)("img",{src:ri(t.authorImage),alt:n,className:"tg-df-author-img",width:"36",height:"36",style:{borderRadius:"50%",objectFit:"cover",flexShrink:0,aspectRatio:"1 / 1",minWidth:"36px",minHeight:"36px"}}),(0,Ee.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,Ee.jsx)("div",{style:{fontSize:"10px",color:"var(--tg-df-text-muted)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"2px",fontWeight:600},children:t.isReviewProduct?(0,Ee.jsx)(Ee.Fragment,{children:"Product tested by:"}):t.isBuyingGuideProduct?(0,Ee.jsx)(Ee.Fragment,{children:"Expert review by:"}):t.isFeatured?(0,Ee.jsxs)(Ee.Fragment,{children:[(0,Ee.jsx)("span",{style:{color:"#FF6600"},children:"Top product"})," ","recommended by:"]}):(0,Ee.jsxs)(Ee.Fragment,{children:[(0,Ee.jsx)("span",{style:{color:"#FF6600"},children:t.merchant})," ","deal recommended by:"]})}),(0,Ee.jsxs)("div",{style:{fontSize:"11px",color:"var(--tg-df-text)",lineHeight:1.2},children:[(0,Ee.jsx)("strong",{children:(0,Ee.jsx)("a",{href:e,target:"_blank",rel:"noopener",style:{textDecoration:"none",color:"inherit",borderBottom:"1px dotted var(--tg-df-text-muted)"},children:n})}),a,t.modifiedDate?(0,Ee.jsxs)("span",{style:{color:"var(--tg-df-text-muted)"},children:[" ","\u2022 ",o0(t.modifiedDate)]}):""]})]})]})})}var K=B(O(),1);function s0({authorUrl:e,deal:t,hideHawkPrices:n,msrpFormatted:a,sourceArticleUrl:l}){let i=ee(String(t.merchant||"")),r=ee(String(t.currency||""));if(t.isBuyingGuideProduct||t.isReviewProduct){let o=!!t.hasCommerceOffer,u=o&&!t.isCheckPrice,c=!!t.hawkPricePending,s=!!t.isReviewProduct&&!c&&!o,f=n&&o&&Array.isArray(t.hawkListings)?t.hawkListings.filter(m=>m?.merchant&&m?.url).slice(0,4):[],d=f.length>0;return(0,K.jsxs)("div",{className:"tg-df-card-footer",children:[c?(0,K.jsx)("div",{className:"tg-df-card-price-group","aria-live":"polite",children:(0,K.jsx)("span",{className:"tg-df-card-price",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"Checking live price\u2026"})}):d?(0,K.jsxs)("div",{className:"tg-df-card-listings",children:[(0,K.jsx)("span",{className:"tg-df-card-listings-title",children:"Today's cheapest prices:"}),(0,K.jsx)("div",{className:"tg-df-card-listings-links",children:f.map((m,v)=>{let A=ee(String(m.merchant));return(0,K.jsx)("a",{"aria-label":`View product at ${A}`,className:"tg-df-card-listing-link hawk-affiliate-link-container","data-fcaw-affiliate-link":"","data-merchant":A,"data-merchant-id":m.merchantId||void 0,"data-model-id":m.modelId||void 0,"data-product-key":m.productKey||void 0,href:m.url,rel:"sponsored nofollow noopener",target:"_blank",children:A},`${m.merchant}-${m.url}-${v}`)})})]}):u?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,K.jsx)("span",{className:"tg-df-card-merchant-pill",title:i,children:i})}),(0,K.jsxs)("div",{className:"tg-df-card-price-group",children:[(0,K.jsxs)("span",{className:"tg-df-card-price",children:[r,(0,K.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,K.jsx)("span",{className:"tg-df-card-msrp",children:a})]})]}):s?(0,K.jsx)("div",{className:"tg-df-card-price-group",children:(0,K.jsx)("span",{className:"tg-df-card-price tg-df-card-price--unavailable",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"No retail listing found"})}):null,(0,K.jsx)(cf,{authorUrl:e,deal:t}),!d&&(0,K.jsx)("a",{href:o?t.url:l,"data-fcaw-affiliate-link":o?"":void 0,target:"_blank",rel:o?"sponsored nofollow noopener":"noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},children:o?u?"VIEW DEAL":"CHECK PRICE":"READ REVIEW"})]})}return(0,K.jsxs)("div",{className:"tg-df-card-footer",children:[!(t.authorName&&!t.isFeatured)&&(0,K.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,K.jsx)("span",{className:"tg-df-card-merchant-pill",title:i,children:i})}),(0,K.jsx)("div",{className:"tg-df-card-price-group",children:t.isCheckPrice?(0,K.jsx)("span",{className:"tg-df-card-price",style:{fontSize:"15px",fontWeight:500,fontStyle:"italic"},children:"See price at retailer"}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)("span",{className:"tg-df-card-price",children:[r,(0,K.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,K.jsx)("span",{className:"tg-df-card-msrp",children:a})]})}),(0,K.jsx)(cf,{authorUrl:e,deal:t}),(0,K.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":"",target:"_blank",rel:"sponsored nofollow noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},"data-model-id":t.modelId||void 0,"data-product-key":t.productKey||void 0,"data-merchant-id":t.merchantId||void 0,children:t.isCheckPrice?"CHECK PRICE":t.isFeatured?"SHOP NOW":"VIEW DEAL"})]})}var Ze=B(O(),1);function d0({couponStatus:e,deal:t,onOpenVouchers:n}){let a=!!t.hasCommerceOffer;return(0,Ze.jsxs)("div",{className:"tg-df-card-image-box",children:[t.buyingGuideBadge?(0,Ze.jsx)("span",{className:"tg-df-card-discount-badge tg-df-buying-guide-badge",children:t.buyingGuideBadge}):t.savingLabel&&!t.isCheckPrice?(0,Ze.jsx)("span",{className:"tg-df-card-discount-badge",children:ee(t.savingLabel)}):null,(0,Ze.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":a?"":void 0,className:a?"hawk-affiliate-link-deal-widget":void 0,target:"_blank",rel:a?"sponsored nofollow noopener":"noopener",style:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",height:"100%"},children:(0,Ze.jsx)("img",{src:t.image||void 0,alt:ee(String(t.title||"")),className:"tg-df-card-image",loading:"lazy",onError:l=>{t.fallbackImage&&!l.currentTarget.dataset.fb?(l.currentTarget.dataset.fb="1",l.currentTarget.src=t.fallbackImage):l.currentTarget.style.opacity="0"}})}),(0,Ze.jsxs)("div",{className:"tg-df-card-badges",children:[t.isPrime&&(0,Ze.jsxs)("span",{className:"tg-df-tag tg-df-tag-prime",children:[(0,Ze.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor",children:(0,Ze.jsx)("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})})," ","Prime"]}),!t.merchant?.toLowerCase().includes("amazon")&&(e==="loading"||e==="has")&&(0,Ze.jsx)("div",{className:"tg-df-coupon-wrapper",style:{display:"inline-flex",alignItems:"center"},children:e==="loading"?(0,Ze.jsx)("div",{className:"tg-df-coupon-spinner"}):(0,Ze.jsxs)("button",{type:"button",className:"tg-df-tag tg-df-tag-coupons",onClick:l=>{l.preventDefault(),n(t.merchant)},children:[(0,Ze.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ze.jsx)("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),(0,Ze.jsx)("line",{x1:"7",y1:"7",x2:"7.01",y2:"7"})]})," ","Coupons"]})})]})]})}var ct=B(O(),1);function f0({label:e="Tom's Guide:",starRating:t,color:n="#1f69ff"}){if(!t||t<=0)return null;let a=Math.floor(t),l=t-a>=.5?1:0,i=Math.max(0,5-a-l),r=[];for(let o=0;o<a;o++)r.push((0,ct.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:n,stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ct.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`f${o}`));l&&r.push((0,ct.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"url(#halfGrad)",stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,ct.jsx)("defs",{children:(0,ct.jsxs)("linearGradient",{id:"halfGrad",x1:"0",x2:"1",y1:"0",y2:"0",children:[(0,ct.jsx)("stop",{offset:"50%",stopColor:n}),(0,ct.jsx)("stop",{offset:"50%",stopColor:"transparent"})]})}),(0,ct.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})]},"h"));for(let o=0;o<i;o++)r.push((0,ct.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:n,opacity:"0.35",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ct.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`e${o}`));return(0,ct.jsxs)("div",{className:"tg-df-card-stars",style:{display:"flex",alignItems:"center",marginBottom:"8px",fontSize:"13px",fontWeight:600,color:"var(--tg-df-text-muted)"},children:[e&&(0,ct.jsx)("span",{style:{marginRight:"6px"},children:e}),(0,ct.jsx)("div",{style:{display:"flex",gap:"2px"},children:r})]})}var At=B(O(),1);function g0({heading:e,items:t}){return t.length===0?null:(0,At.jsxs)("div",{style:{marginBottom:"10px"},children:[(0,At.jsx)("strong",{style:{display:"block",fontSize:"12px",marginBottom:"3px"},children:e}),(0,At.jsx)("ul",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:0,paddingLeft:"18px"},children:t.map(n=>{let a=ee(String(n));return(0,At.jsx)("li",{children:a},n)})})]})}function m0({cons:e=[],expanded:t,fullReviewUrl:n,onToggle:a,pros:l=[],subtitle:i="",truncateSubtitle:r=!1}){let o=l.length>0||e.length>0,u=ee(i);return!u&&!o?null:(0,At.jsxs)("div",{style:{marginBottom:"12px"},children:[u&&(0,At.jsx)("p",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:"0 0 8px",display:!t&&r?"-webkit-box":"block",WebkitLineClamp:!t&&r?3:void 0,WebkitBoxOrient:!t&&r?"vertical":void 0,overflow:!t&&r?"hidden":void 0},children:u}),t&&o&&(0,At.jsxs)("div",{children:[(0,At.jsx)(g0,{heading:"Pros",items:l}),(0,At.jsx)(g0,{heading:"Cons",items:e})]}),(o||r)&&(0,At.jsxs)("div",{className:"tg-df-review-summary-actions",style:{alignItems:"flex-start",display:"flex",flexDirection:"column",gap:t&&n?"4px":0},children:[t&&n&&(0,At.jsx)("a",{href:n,target:"_blank",rel:"noopener",className:"tg-df-review-full-link",style:{alignItems:"center",color:"var(--tg-df-blue)",display:"flex",fontSize:"12px",fontWeight:700,minHeight:"40px",paddingRight:"12px",textDecoration:"underline"},children:"Read our full review"}),(0,At.jsx)("button",{type:"button",onClick:c=>{c.preventDefault(),c.stopPropagation(),a()},className:"tg-df-review-summary-toggle",style:{appearance:"none",background:"transparent",border:"none",color:"#000000",cursor:"pointer",fontFamily:"inherit",fontSize:"11px",fontWeight:700,minHeight:"40px",padding:"0 12px 0 0",textTransform:"uppercase"},children:t?"LESS":"READ MORE"})]})]})}var oi=B(ft(),1);var Br=B(O(),1);function h0({text:e,expanded:t,onToggle:n}){let[a,l]=(0,oi.useState)(!1),i=(0,oi.useRef)(null),r=ee(e);return(0,oi.useEffect)(()=>{i.current&&l(i.current.scrollHeight>i.current.clientHeight||i.current.scrollHeight>60)},[r]),r?(0,Br.jsxs)("div",{style:{marginBottom:"12px",position:"relative"},children:[(0,Br.jsx)("p",{ref:i,style:{fontSize:"13px",color:"var(--tg-df-text-muted)",marginBottom:"0",lineHeight:"1.4",display:t?"inline":"-webkit-box",WebkitLineClamp:t?"unset":3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:r}),a&&(0,Br.jsx)("button",{type:"button",onClick:o=>{o.preventDefault(),o.stopPropagation(),n()},style:{display:"block",appearance:"none",border:"none",color:"#000000",fontSize:"11px",fontWeight:700,textTransform:"uppercase",cursor:"pointer",fontFamily:"inherit",position:t?"static":"absolute",bottom:"2px",right:0,background:t?"transparent":"linear-gradient(to right, transparent, #fff 20%, #fff)",padding:t?"0":"0 0 0 16px"},children:t?"LESS":"READ MORE"})]}):null}var p0={pcgamer:"#DC191B",space:"#2E4A7F",tomsguide:"#1F69FF",techradar:"#E40784",golfmonthly:"#FFFFFF",androidcentral:"#1CCC3E",cinemablend:"#FFC033",creativebloq:"#DC361A",cyclingnews:"#371B51",cyclingweekly:"#AE1305",decanter:"#1B1B1B",digitalcameraworld:"#CAEBF2",fitandwell:"#BED100",fourfourtwo:"#AE1006",gamesradar:"#DC361A",guitarplayer:"#FFFFFF",guitarworld:"#DC1F26",homesandgardens:"#185A7D",idealhome:"#CAEBF2",imore:"#FFD600",livescience:"#023953",livingetc:"#FFFFFF",loudersound:"#DC0F17",marieclaireus:"#FFFFFF",marieclaireuk:"#FFFFFF",musicradar:"#006EA9",shortlist:"#2853E0",t3:"#DF0A14",theweek:"#DF0A14",theweekjuniorus:"#10A0B0",tomshardware:"#D8373B",wallpaper:"#FFFFFF",whathifi:"#E02928",whowhatwear:"#FFFFFF",windowscentral:"#CE0E5F",womanandhome:"#2F746E"},Nr={tomsguide:"https://proof.vanilla.tools/media/images/brandLogos/tomsguide.png",techradar:"https://proof.vanilla.tools/media/images/brandLogos/techradar.png",tomshardware:"https://proof.vanilla.tools/media/images/brandLogos/tomshardware.png",pcgamer:"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png",gamesradar:"https://proof.vanilla.tools/media/images/brandLogos/gamesradar.png",creativebloq:"https://proof.vanilla.tools/media/images/brandLogos/creativebloq.png",space:"https://proof.vanilla.tools/media/images/brandLogos/space.png",livescience:"https://proof.vanilla.tools/media/images/brandLogos/livescience.png",cinemablend:"https://proof.vanilla.tools/media/images/brandLogos/cinemablend.png",marieclaireus:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireus.png",marieclaireuk:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireuk.png",homesandgardens:"https://proof.vanilla.tools/media/images/brandLogos/homesandgardens.png",whowhatwear:"https://proof.vanilla.tools/media/images/brandLogos/whowhatwear.png",idealhome:"https://proof.vanilla.tools/media/images/brandLogos/idealhome.png",womanandhome:"https://proof.vanilla.tools/media/images/brandLogos/womanandhome.png",livingetc:"https://proof.vanilla.tools/media/images/brandLogos/livingetc.png",t3:"https://proof.vanilla.tools/media/images/brandLogos/t3.png",whathifi:"https://proof.vanilla.tools/media/images/brandLogos/whathifi.png",digitalcameraworld:"https://proof.vanilla.tools/media/images/brandLogos/digitalcameraworld.png",fitandwell:"https://proof.vanilla.tools/media/images/brandLogos/fitandwell.png",golfmonthly:"https://proof.vanilla.tools/media/images/brandLogos/golfmonthly.png",musicradar:"https://proof.vanilla.tools/media/images/brandLogos/musicradar.png",windowscentral:"https://proof.vanilla.tools/media/images/brandLogos/windowscentral.png",cyclingnews:"https://proof.vanilla.tools/media/images/brandLogos/cyclingnews.png",cyclingweekly:"https://proof.vanilla.tools/media/images/brandLogos/cyclingweekly.png",loudersound:"https://proof.vanilla.tools/media/images/brandLogos/loudersound.png",guitarworld:"https://proof.vanilla.tools/media/images/brandLogos/guitarworld.png",guitarplayer:"https://proof.vanilla.tools/media/images/brandLogos/guitarplayer.png",wallpaper:"https://proof.vanilla.tools/media/images/brandLogos/wallpaper.png",fourfourtwo:"https://proof.vanilla.tools/media/images/brandLogos/fourfourtwo.png",shortlist:"https://proof.vanilla.tools/media/images/brandLogos/shortlist.png",advnture:"https://proof.vanilla.tools/media/images/brandLogos/advnture.png",countrylife:"https://proof.vanilla.tools/media/images/brandLogos/countrylife.png",gardeningknowhow:"https://proof.vanilla.tools/media/images/brandLogos/gardeningknowhow.png",gnomesingardens:"https://proof.vanilla.tools/media/images/brandLogos/gnomesingardens.png",kiplinger:"https://proof.vanilla.tools/media/images/brandLogos/kiplinger.png",moneyweek:"https://proof.vanilla.tools/media/images/brandLogos/moneyweek.png",toptenreviews:"https://proof.vanilla.tools/media/images/brandLogos/toptenreviews.png"},Gu={tomsguide:"Tom's Guide",techradar:"TechRadar",tomshardware:"Tom's Hardware",pcgamer:"PC Gamer",gamesradar:"GamesRadar+",creativebloq:"Creative Bloq",space:"Space",livescience:"Live Science",cinemablend:"CinemaBlend",marieclaireus:"Marie Claire US",marieclaireuk:"Marie Claire UK",homesandgardens:"Homes & Gardens",whowhatwear:"Who What Wear",idealhome:"Ideal Home",womanandhome:"Woman & Home",livingetc:"Living Etc",t3:"T3",whathifi:"What Hi-Fi?",digitalcameraworld:"Digital Camera World",fitandwell:"Fit & Well",golfmonthly:"Golf Monthly",musicradar:"MusicRadar",androidcentral:"Android Central",imore:"iMore",windowscentral:"Windows Central",cyclingnews:"Cycling News",cyclingweekly:"Cycling Weekly",loudersound:"Louder Sound",guitarworld:"Guitar World",guitarplayer:"Guitar Player",theweek:"The Week",theweekjuniorus:"The Week Junior US",wallpaper:"Wallpaper",decanter:"Decanter",fourfourtwo:"FourFourTwo",shortlist:"ShortList",advnture:"Advnture",countrylife:"Country Life",gardeningknowhow:"Gardening Know How",gnomesingardens:"Gnomes in Gardens",kiplinger:"Kiplinger",moneyweek:"Money Week",toptenreviews:"Top 10 Reviews"},y0={pcgamer:[{key:"steam",href:"https://steamcommunity.com/groups/pcgamer",label:"PC Gamer on Steam"},{key:"x",href:"https://twitter.com/pcgamer",label:"PC Gamer on X"},{key:"facebook",href:"https://www.facebook.com/pcgamermagazine",label:"PC Gamer on Facebook"},{key:"instagram",href:"https://www.instagram.com/pcgamer_mag/?hl=en",label:"PC Gamer on Instagram"},{key:"youtube",href:"https://www.youtube.com/user/pcgamer",label:"PC Gamer on YouTube"},{key:"twitch",href:"https://www.twitch.tv/pcgamer",label:"PC Gamer on Twitch"},{key:"tiktok",href:"https://www.tiktok.com/@pcgamer_mag?lang=en",label:"PC Gamer on TikTok"}],homesandgardens:[{key:"instagram",href:"https://www.instagram.com/homesandgardensofficial",label:"Homes & Gardens on Instagram"},{key:"facebook",href:"https://www.facebook.com/homesandgardens/",label:"Homes & Gardens on Facebook"},{key:"x",href:"https://x.com/homesandgardens",label:"Homes & Gardens on X"},{key:"tiktok",href:"https://www.tiktok.com/@homesandgardensofficial",label:"Homes & Gardens on TikTok"},{key:"pinterest",href:"https://pinterest.com/homesgardensofficial/",label:"Homes & Gardens on Pinterest"}],whowhatwear:[{key:"x",href:"https://twitter.com/WhoWhatWear",label:"Who What Wear on X"},{key:"instagram",href:"https://www.instagram.com/whowhatwear/",label:"Who What Wear on Instagram"},{key:"facebook",href:"https://www.facebook.com/WhoWhatWear/",label:"Who What Wear on Facebook"},{key:"pinterest",href:"https://www.pinterest.co.uk/whowhatwearuk/",label:"Who What Wear on Pinterest"},{key:"tiktok",href:"https://www.tiktok.com/@whowhatwear.uk",label:"Who What Wear on TikTok"}]};var Ot=B(O(),1);function v0(e){return String(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").trim().toLowerCase()}function Jw(e){let t=ee(String(e.brand||"")).trim(),n=ee(String(e.productName||e.title||"")).trim(),a=v0(t),l=v0(n);return a.length>0&&l.startsWith(a)&&!/^[a-z0-9]/.test(l.slice(a.length))||!t?n:`${t} ${n}`.trim()}function b0({couponStatus:e,deal:t,editorMode:n,hideHawkPrices:a,isDescriptionExpanded:l,isSelected:i,onDescriptionToggle:r,onOpenVouchers:o,onSelectionChange:u,website:c}){let s=ee(String(t.currency||"")),f=t.rawMsrp?s+t.rawMsrp:null,d=Jw(t),m=ee(String(t.title||"")),v=Gu[c||"tomsguide"]||c||"Tom's Guide",A=(c||"tomsguide").includes(".")?(c||"").startsWith("http")?c:`https://${c}`:`https://www.${c||"tomsguide"}.com`,b=(t.documentUrl||"").replace(/^\/+/,""),h=b.startsWith("http://")||b.startsWith("https://")?b:`${A}/${b}`,g=String(t.sourceArticleUrl||t.documentUrl||t.url||"").replace(/^\/+/,""),p=g.startsWith("http://")||g.startsWith("https://")?g:`${A}/${g}`,y=!!t.hasCommerceOffer;return(0,Ot.jsxs)("div",{className:"tg-df-card","data-brand":t.modelBrand||t.brand||void 0,"data-currency":t.isoCurrencyCode||s||void 0,"data-deal-id":t.externalProductId||t.id||void 0,"data-merchant":t.merchant||void 0,"data-merchant-id":t.merchantId||void 0,"data-model-id":t.modelId||void 0,"data-previous-price":t.rawMsrp||void 0,"data-price":t.rawPrice||void 0,"data-product-key":t.productKey||void 0,"data-product-name":t.productName||t.title||void 0,"data-review-product":t.isReviewProduct?"true":void 0,"data-source-article-url":t.isReviewProduct?p:void 0,children:[n&&(0,Ot.jsx)("input",{type:"checkbox",className:"tg-df-deal-checkbox",checked:i,onChange:C=>u(C.target.checked)}),(0,Ot.jsx)(d0,{couponStatus:e,deal:t,onOpenVouchers:o}),(0,Ot.jsxs)("div",{className:"tg-df-card-body",children:[(0,Ot.jsx)("h3",{className:"tg-df-card-title",title:m,children:(0,Ot.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":y?"":void 0,className:y?"hawk-affiliate-link-container":void 0,target:"_blank",rel:y?"sponsored nofollow noopener":"noopener",style:{textDecoration:"none",color:"inherit"},children:(0,Ot.jsx)("strong",{children:d})})}),(0,Ot.jsx)(f0,{label:t.isBuyingGuideProduct?"":`${v} rating:`,starRating:t.starRating,color:t.isReviewProduct?"var(--tg-df-blue)":void 0}),t.isBuyingGuideProduct||t.isReviewProduct?(0,Ot.jsx)(m0,{cons:t.cons,expanded:l,fullReviewUrl:t.isReviewProduct&&g?p:void 0,onToggle:r,pros:t.pros,subtitle:t.isReviewProduct?t.description:t.subtitle,truncateSubtitle:t.isReviewProduct}):t.description?(0,Ot.jsx)(h0,{text:t.description,expanded:l,onToggle:r}):null,(0,Ot.jsx)(s0,{authorUrl:h,deal:t,hideHawkPrices:a,msrpFormatted:f,sourceArticleUrl:p})]})]})}var ce=B(O(),1);function $w({activeDealTag:e,activeFreeformTags:t=[],query:n,selectedBrands:a=[]}){let l=o=>{let u=String(o||"").trim();return u&&u.toLowerCase()!=="everything"?u:""},r=(t.length>0?t:e?[e]:a.length>0?a:[n]).map(l).filter(Boolean).map(o=>o.replace(/\s+deals?$/i,"").trim()).filter((o,u,c)=>c.findIndex(s=>s.toLowerCase()===o.toLowerCase())===u);return r.length<=1?r[0]||"":`${r.slice(0,-1).join(", ")} or ${r.at(-1)}`}function e2(){return(0,ce.jsx)(ce.Fragment,{children:Array.from({length:6}).map((e,t)=>(0,ce.jsxs)("div",{className:"tg-df-card",children:[(0,ce.jsx)("div",{className:"tg-df-card-image-box tg-df-skeleton"}),(0,ce.jsxs)("div",{className:"tg-df-card-body",children:[(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short",style:{marginBottom:"24px"}}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title",style:{width:"80%"}}),(0,ce.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short"}),(0,ce.jsx)("div",{className:"tg-df-card-cta tg-df-skeleton",style:{width:"100%",height:"40px",marginTop:"auto",border:"none"}})]})]},t))})}function t2(e,t){return{"@context":"https://schema.org","@type":"ItemList",itemListElement:e.slice(0,t).map((n,a)=>{let l="USD";return n.currency==="\xA3"?l="GBP":n.currency==="\u20AC"?l="EUR":n.currency==="A$"?l="AUD":n.currency==="CA$"&&(l="CAD"),{"@type":"ListItem",position:a+1,item:{"@type":"Product",name:n.title,image:n.image||"",description:n.description||"",brand:{"@type":"Brand",name:n.brand||""},offers:{"@type":"Offer",priceCurrency:l,price:n.rawPrice||0,url:n.url||"",seller:{"@type":"Organization",name:n.merchant||""}}}}}).filter(n=>n.item.name)}}function w0({activeDealTag:e,activeFreeformTags:t,couponMap:n,deals:a,displayCount:l,editorMode:i,error:r,expandedDealIds:o,hasMore:u,hideHawkPrices:c,loading:s,loadingMore:f,loadMoreStartCount:d,onDescriptionToggle:m,onLoadMore:v,onOpenVouchers:A,query:b,recentDealsOnly:h,selectedBrands:g,selectedDeals:p,setSelectedDeals:y,website:C}){let R=$w({activeDealTag:e,activeFreeformTags:t,query:b,selectedBrands:g}),T=f&&d!=null?d:l,M=!f&&d!=null&&d<T?d:null,w=D=>D.map(k=>(0,ce.jsx)(A0.default.Fragment,{children:(0,ce.jsx)(b0,{couponStatus:n[k.merchant],deal:k,editorMode:i,hideHawkPrices:c,isDescriptionExpanded:o.has(k.id),isSelected:p.has(k.id),onDescriptionToggle:()=>m(k.id),onOpenVouchers:A,onSelectionChange:se=>{let I=new Map(p);se?I.set(k.id,k):I.delete(k.id),y(I)},website:C})},k.id));return(0,ce.jsx)("div",{className:"tg-df-grid-wrapper",children:(0,ce.jsx)("div",{className:"tg-df-grid article-body tg-df-grid-auto",id:"tg-df-grid",children:s?(0,ce.jsx)(e2,{}):r?(0,ce.jsx)("div",{className:"tg-df-message",children:"Failed to load deals. Please try again."}):a.length===0?(0,ce.jsx)("div",{className:"tg-df-message",children:h?`No ${R?`${R} `:""}deals found from the last 30 days.`:!b||b.length<=2||b.toLowerCase()==="everything"?"No deals found for this author.":`No savings squad match your search for "${b}".`}):(0,ce.jsxs)(ce.Fragment,{children:[w(a.slice(0,M??T)),M!=null&&(0,ce.jsx)("div",{"aria-live":"polite",className:"tg-df-load-more-boundary",style:{alignItems:"center",color:"var(--tg-df-text-muted)",display:"flex",fontSize:"13px",fontWeight:600,gridColumn:"1 / -1",justifyContent:"center",marginTop:"16px",minHeight:"40px",overflowAnchor:"none"},children:"More products"}),M!=null&&w(a.slice(M,T)),u&&(0,ce.jsx)("div",{className:"tg-df-load-more-control",style:{width:"100%",display:"flex",justifyContent:"center",marginTop:"16px",gridColumn:"1 / -1",overflowAnchor:"none"},children:(0,ce.jsx)("button",{type:"button",className:"tg-df-tag-outline",style:{padding:"8px 24px",borderRadius:"100px",fontWeight:600,fontSize:"14px",cursor:"pointer"},"aria-busy":f,disabled:f,onClick:D=>{D.preventDefault(),D.stopPropagation(),v()},children:f?"Loading more products\u2026":"Load More"})}),a.length>0&&(0,ce.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(t2(a,T))}})]})})})}var S0=B(O(),1);var pn=B(ft(),1),nn=B(O(),1);function Pu({onScrollLeft:e,onScrollRight:t,showLeft:n,showRight:a}){return(0,nn.jsxs)(nn.Fragment,{children:[(0,nn.jsx)("button",{"aria-label":"Scroll left",className:"tg-df-scroll-btn left tg-df-desktop-only",onClick:e,style:{display:n?"flex":"none"},type:"button",children:(0,nn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,nn.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,nn.jsx)("button",{"aria-label":"Scroll right",className:"tg-df-scroll-btn right tg-df-desktop-only",onClick:t,style:{display:a?"flex":"none"},type:"button",children:(0,nn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,nn.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})}function qu(e){let t=(0,pn.useRef)(null),[n,a]=(0,pn.useState)(!1),[l,i]=(0,pn.useState)(!1),r=(0,pn.useCallback)(()=>{let u=t.current;u&&(a(u.scrollLeft>1),i(Math.ceil(u.scrollLeft+u.clientWidth)<u.scrollWidth-1))},[]);(0,pn.useLayoutEffect)(()=>{let u=t.current;if(!u)return;r();let c=requestAnimationFrame(r),s=typeof ResizeObserver>"u"?null:new ResizeObserver(r);return s?.observe(u),()=>{cancelAnimationFrame(c),s?.disconnect()}},[e,r]);let o=(0,pn.useCallback)(u=>{t.current?.scrollBy({left:u,behavior:"smooth"})},[]);return{onScroll:r,railRef:t,scrollLeft:()=>o(-240),scrollRight:()=>o(240),showLeft:n,showRight:l}}var jn=B(O(),1);function ui({containerClassName:e,itemClassName:t,items:n,loading:a,loadingKey:l,onItemClick:i,rowClassName:r,showCounters:o}){let u=qu(n.length);return n.length===0&&!a?null:(0,jn.jsxs)("div",{className:e,style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[n.length>0&&(0,jn.jsx)(Pu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,jn.jsx)("div",{className:r,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none"},onScroll:u.onScroll,children:n.length>0?n.map(c=>(0,jn.jsxs)("button",{className:t,onClick:()=>i(c.key),style:{border:"none",borderRight:"1px solid var(--tg-df-border)",padding:"12px 20px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"1px",cursor:"pointer",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"6px",...t==="tg-df-brand-row-item"?{transition:"all 0.2s ease"}:{},background:c.selected?"var(--tg-df-bg-secondary)":"var(--tg-df-bg)",color:c.selected?"var(--tg-df-text-primary)":"var(--tg-df-text-muted)",fontWeight:c.selected?600:500},children:[c.label," ",l===c.key&&(0,jn.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading",style:{borderWidth:"2px",height:"12px",width:"12px"}}),o!==!1&&(0,jn.jsx)("span",{style:{color:"var(--tg-df-blue)",fontSize:"10px",...t==="tg-df-brand-row-item"?{fontWeight:400}:{}},children:c.count})]},c.key)):[1,2,3,4,5].map(c=>(0,jn.jsx)("div",{className:"tg-df-skeleton",style:{height:"36px",width:"80px",borderRadius:"18px",flexShrink:0,margin:"8px 12px"}},`${r}-skeleton-${c}`))})]})}var R0=B(O(),1);function C0({airedaleBrands:e,brands:t,loading:n,refreshing:a,onBrandToggle:l,selectedBrands:i,showAuthorCounters:r}){let o=e.length>0?e:t||[],u=o.slice(0,15).map(c=>({count:c.count||0,key:c.formatted_value,label:c.formatted_value,selected:i?.includes(c.formatted_value)||!1}));return(0,R0.jsx)(ui,{containerClassName:"tg-df-brands-row-container",itemClassName:"tg-df-brand-row-item",items:u,loading:n&&o.length===0,loadingKey:a?i?.[0]:null,onItemClick:c=>l?.(c),rowClassName:"tg-df-brands-row",showCounters:r})}var E0=B(O(),1);function T0({activeDealTag:e,airedaleTagCounts:t,airedaleTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>{let c=u.split(":::"),s=c[0];return{count:t[u]||0,key:s,label:c[1]||u,selected:e===s}});return(0,E0.jsx)(ui,{containerClassName:"tg-df-categories-row-container",itemClassName:"tg-df-category-row-item",items:o,loading:a&&n.length===0,loadingKey:l?e:null,onItemClick:i,rowClassName:"tg-df-categories-row",showCounters:r})}var x0=B(O(),1);function D0({activeFreeformTags:e,freeformTagCounts:t,freeformTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>({count:t[u.handle]||0,key:u.handle,label:u.label,selected:e.includes(u.handle)}));return(0,x0.jsx)(ui,{containerClassName:"tg-df-freeform-tags-row-container",itemClassName:"tg-df-freeform-tag-row-item",items:o,loading:a&&n.length===0,loadingKey:l&&e.at(-1)||null,onItemClick:i,rowClassName:"tg-df-freeform-tags-row",showCounters:r})}var _e=B(O(),1),n2=4;function M0({authors:e,clickedAuthorOverride:t,loading:n,refreshing:a,onAuthorClick:l,overriddenAuthorHandle:i,overriddenAuthorName:r,website:o}){let u=qu(e.length);return e.length===0&&!n?null:(0,_e.jsxs)("div",{className:"tg-df-authors-row-container",style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[e.length>0&&(0,_e.jsx)(Pu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,_e.jsx)("div",{className:"tg-df-authors-row tg-df-mobile-authors",onScroll:u.onScroll,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none",gap:"24px",padding:"4px 16px 2px 16px",alignItems:"flex-start"},children:e.length>0?e.map((c,s)=>{let f=Nr[c.brandKey]||Nr[o||"tomsguide"],d=t&&(i===c.handle||r===c.fullName);return(0,_e.jsxs)("div",{className:"tg-df-author-row-item",onClick:()=>l(c),style:{cursor:"pointer",display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px",opacity:t?d?1:.4:1},children:[(0,_e.jsxs)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px",borderRadius:"50%",boxShadow:d?"0 0 0 3px var(--tg-df-blue, #1F69FF)":"none"},children:[(0,_e.jsx)("img",{src:ri(c.image),alt:c.fullName,decoding:"async",loading:s<n2?"eager":"lazy",style:{width:"100%",height:"100%",borderRadius:"50%",objectFit:"cover",filter:t&&!d?"grayscale(100%)":"none"}}),d&&(0,_e.jsx)("span",{"aria-label":`Clear ${c.fullName} selection`,className:"tg-df-author-clear-badge",title:"Click again to clear selection",style:{alignItems:"center",backgroundColor:"#dc2626",border:"2px solid var(--tg-df-bg, #fff)",borderRadius:"50%",boxShadow:"0 1px 3px rgb(0 0 0 / 25%)",color:"#fff",display:"flex",fontSize:"15px",fontWeight:700,height:"20px",justifyContent:"center",lineHeight:1,position:"absolute",right:"-5px",top:"-5px",width:"20px",zIndex:1},children:(0,_e.jsx)("span",{"aria-hidden":"true",style:{display:"block",transform:"translateY(-1px)"},children:"\xD7"})}),f&&(0,_e.jsx)("img",{src:f,alt:"",className:"tg-df-author-brand-logo",decoding:"async",loading:"lazy",style:{position:"absolute",bottom:"-4px",right:"-4px",width:"24px",height:"24px",borderRadius:"50%",border:"2px solid var(--tg-df-bg, #fff)",backgroundColor:"#000",objectFit:"contain",filter:t&&!d?"grayscale(100%)":"none"}})]}),(0,_e.jsxs)("div",{style:{textAlign:"center"},children:[(0,_e.jsxs)("div",{className:"tg-df-author-row-name",style:{fontSize:"13px",fontWeight:700,color:"var(--tg-df-text)",lineHeight:"1.2"},children:[c.name,a&&d&&(0,_e.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading author products",style:{borderWidth:"2px",display:"inline-block",height:"11px",marginLeft:"4px",width:"11px"}})]}),c.role&&(0,_e.jsx)("div",{className:"tg-df-author-row-role",style:{fontSize:"11px",color:"var(--tg-df-text-muted)",lineHeight:"1.2",marginTop:"2px",display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis",wordBreak:"break-word"},children:c.role})]})]},c.handle)}):[1,2,3,4].map(c=>(0,_e.jsxs)("div",{className:"tg-df-author-row-item",style:{display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px"},children:[(0,_e.jsx)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px"},children:(0,_e.jsx)("div",{className:"tg-df-skeleton",style:{width:"100%",height:"100%",borderRadius:"50%"}})}),(0,_e.jsxs)("div",{style:{textAlign:"center",width:"100%"},children:[(0,_e.jsx)("div",{className:"tg-df-skeleton",style:{height:"12px",width:"80%",margin:"0 auto 4px auto",borderRadius:"2px"}}),(0,_e.jsx)("div",{className:"tg-df-skeleton",style:{height:"10px",width:"60%",margin:"0 auto",borderRadius:"2px"}})]})]},`author-skeleton-${c}`))})]})}var Ja=B(O(),1);function _0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,freeformTagCounts:i,freeformTags:r,allAuthorsList:o,brands:u,clickedAuthorOverride:c,loading:s,refreshing:f,onAuthorClick:d,onBrandToggle:m,onTagClick:v,onFreeformTagClick:A,overriddenAuthorHandle:b,overriddenAuthorName:h,selectedBrands:g,showAuthorRail:p,showAuthorCounters:y,showBrandRail:C,showCategoryRail:R,showFreeformTagRail:T,website:M}){let w=R!==!1&&l.length>0||T!==!1&&r.length>0||C!==!1&&(n.length>0||!!u?.length)||p&&o.length>0;return!(p||R!==!1||T!==!1||C!==!1)||!w&&!s?null:(0,Ja.jsxs)("div",{id:"tg-df-spreadsheet-filters",style:{display:"block",marginBottom:"16px"},children:[p&&(0,Ja.jsx)(M0,{authors:o,clickedAuthorOverride:c,loading:s&&o.length===0,refreshing:f,onAuthorClick:d,overriddenAuthorHandle:b,overriddenAuthorName:h,website:M}),R!==!1&&(0,Ja.jsx)(T0,{activeDealTag:e,airedaleTagCounts:a,airedaleTags:l,loading:s,refreshing:f,onTagClick:v,showAuthorCounters:y}),T!==!1&&(0,Ja.jsx)(D0,{activeFreeformTags:t,freeformTagCounts:i,freeformTags:r,loading:s,refreshing:f,onTagClick:A,showAuthorCounters:y}),C!==!1&&(0,Ja.jsx)(C0,{airedaleBrands:n,brands:u,loading:s,refreshing:f,onBrandToggle:m,selectedBrands:g,showAuthorCounters:y})]})}var O0=B(ft(),1);var B0=[{value:"date_desc",label:"Most recent"},{value:"rating_desc",label:"Highest rating"},{value:"scored_first",label:"Scored products first"}];function Or({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}){return!!(a&&e!==!0&&t===!1&&n===!1)}function Fu({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a,lightweightReviewDelivery:l,showPriceDiscountFilters:i,showReviewSort:r}){return!!(l&&i===!1&&r===!1&&Or({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}))}function ju(e=!0){return e?B0:B0.filter(t=>t.value!=="scored_first")}function wa(e,t=!0){return!t&&e==="scored_first"?"date_desc":e||"date_desc"}var H=B(O(),1),N0=[{value:"all",label:"All Prices",shortLabel:""},{value:"under50",label:"Under $50",shortLabel:"< $50"},{value:"50_100",label:"$50 - $100",shortLabel:"$50-$100"},{value:"100_200",label:"$100 - $200",shortLabel:"$100-$200"},{value:"200_500",label:"$200 - $500",shortLabel:"$200-$500"},{value:"over500",label:"Over $500",shortLabel:"> $500"}],a2=[{value:"0",label:"Any discount"},...[5,10,15,20,25,30,40,50,60,70].map(e=>({value:String(e),label:`Min ${e}% off`}))];function l2({open:e}){return(0,H.jsx)("svg",{"aria-hidden":"true",className:e?"is-open":void 0,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,H.jsx)("path",{d:"m6 9 6 6 6-6"})})}function Yn(){return(0,H.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,H.jsx)("polyline",{points:"20 6 9 17 4 12"})})}function k0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,brands:i,discountAmount:r,enabled:o,freeformTagCounts:u,freeformTags:c,includeScoredFirst:s,onBrandSelect:f,onBrandToggle:d,onDiscountAmountChange:m,onFreeformTagClear:v,onFreeformTagToggle:A,onPriceRangeChange:b,onReviewSortChange:h,onTagClear:g,onTagClick:p,priceRange:y,reviewSort:C,selectedBrands:R,showCounters:T,showBrandRail:M,showCategoryRail:w,showFreeformTagRail:D,showPriceDiscountFilters:k,showReviewSort:se}){let[I,j]=(0,O0.useState)(null);if(!o)return null;let He=l.map(x=>{let P=x.split(":::");return{count:a[x]||0,handle:P[0],label:P[1]||x}}),ze=n.length>0?n:i||[],St=He.find(x=>x.handle===e),Ie=y||"all",rn=!r||r==="all"?"0":r,Be=N0.find(x=>x.value===Ie),Je=k!==!1,nt=wa(C,s),X=ju(s),de=nt==="rating_desc"?"Highest rating":nt==="scored_first"?"Scored first":"Most recent",$e=x=>{j(P=>P===x?null:x)},Z=[];return w!==!1&&Z.push({active:!!e,label:`CATEGORIES${St?` (${St.label})`:""}`,menu:"categories"}),D!==!1&&Z.push({active:t.length>0,label:`KEYWORDS${t.length>0?` (${t.length})`:""}`,menu:"keywords"}),M!==!1&&Z.push({active:R.length>0,label:`BRANDS${R.length>0?` (${R.length})`:""}`,menu:"brands"}),Je&&Z.push({active:Ie!=="all",label:`PRICES${Be?.shortLabel?` (${Be.shortLabel})`:""}`,menu:"prices"}),(Je||se)&&Z.push({active:se?nt!=="date_desc":rn!=="0",label:se?`SORT REVIEWS (${de})`:`DISCOUNTS${rn!=="0"?` (${rn}%+)`:""}`,menu:se?"review-sort":"discounts"}),(0,H.jsxs)("div",{className:"tg-df-mobile-2x2-container",children:[(0,H.jsx)("div",{className:`tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--${Z.length%2===0?"even":"odd"}`,children:Z.map(x=>(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-grid-cell${x.active?" has-active-filter":""}${I===x.menu?" active":""}`,"aria-expanded":I===x.menu,onClick:()=>$e(x.menu),children:[(0,H.jsx)("span",{children:x.label}),(0,H.jsx)(l2,{open:I===x.menu})]},x.menu))}),w!==!1&&I==="categories"&&(0,H.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${e?"":" selected"}`,onClick:()=>{g(),j(null)},children:[(0,H.jsx)("span",{children:"All Categories"}),!e&&(0,H.jsx)(Yn,{})]}),He.map(x=>{let P=e===x.handle;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{p(x.handle),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P?(0,H.jsx)(Yn,{}):T!==!1?(0,H.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},x.handle)})]}),M!==!1&&I==="brands"&&(0,H.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${R.length===0?" selected":""}`,onClick:()=>f?.([]),children:[(0,H.jsx)("span",{children:"All Brands"}),R.length===0&&(0,H.jsx)(Yn,{})]}),ze.map(x=>{let P=x.formatted_value,Q=R.includes(P);return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${Q?" selected":""}`,onClick:()=>d?.(P),children:[(0,H.jsx)("span",{children:P}),Q?(0,H.jsx)(Yn,{}):T!==!1&&x.count?(0,H.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},P)})]}),D!==!1&&I==="keywords"&&(0,H.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${t.length===0?" selected":""}`,onClick:()=>{v(),j(null)},children:[(0,H.jsx)("span",{children:"All Keywords"}),t.length===0&&(0,H.jsx)(Yn,{})]}),c.map(x=>{let P=t.includes(x.handle);return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>A(x.handle),children:[(0,H.jsx)("span",{children:x.label}),P?(0,H.jsx)(Yn,{}):T!==!1&&u[x.handle]?(0,H.jsx)("span",{className:"tg-df-mobile-cell-badge",children:u[x.handle]}):null]},x.handle)})]}),I==="prices"&&(0,H.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:N0.map(x=>{let P=Ie===x.value;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{b?.(x.value),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P&&(0,H.jsx)(Yn,{})]},x.value)})}),I==="discounts"&&(0,H.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:a2.map(x=>{let P=rn===x.value;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{m?.(x.value),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P&&(0,H.jsx)(Yn,{})]},x.value)})}),I==="review-sort"&&(0,H.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:X.map(x=>{let P=nt===x.value;return(0,H.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${P?" selected":""}`,onClick:()=>{h?.(x.value),j(null)},children:[(0,H.jsx)("span",{children:x.label}),P&&(0,H.jsx)(Yn,{})]},x.value)})})]})}var $a=B(ft(),1);var W=B(O(),1);function L0({airedaleBrands:e,airedaleTags:t,discountAmount:n,hidden:a,includeScoredFirst:l,onDiscountAmountChange:i,onPriceRangeChange:r,onReviewSortChange:o,priceRange:u,reviewSort:c,showReviewSort:s,showPriceDiscountFilters:f}){let d=(0,$a.useRef)(null),[m,v]=(0,$a.useState)(!1),[A,b]=(0,$a.useState)(!1),h=ju(l),g=wa(c,l),p=()=>{if(!d.current)return;let{scrollLeft:y,scrollWidth:C,clientWidth:R}=d.current;v(y>0),b(Math.ceil(y+R)<C-5)};return(0,$a.useEffect)(()=>(p(),window.addEventListener("resize",p),setTimeout(p,100),setTimeout(()=>{document.querySelector(".tg-df-categories-row")?.dispatchEvent(new Event("scroll")),document.querySelector(".tg-df-brands-row")?.dispatchEvent(new Event("scroll"))},150),()=>window.removeEventListener("resize",p)),[t,e]),(0,W.jsx)("div",{className:"tg-df-controls",id:"tg-df-controls",style:{display:a?"none":"flex",marginTop:"12px",marginBottom:"16px",justifyContent:"center"},children:(0,W.jsxs)("div",{className:"tg-df-filters-container",style:{position:"relative",width:"100%",maxWidth:"800px",margin:"0 auto"},children:[(0,W.jsx)("button",{className:"tg-df-scroll-btn left",style:{display:m?"flex":"none"},onClick:()=>d.current?.scrollBy({left:-200,behavior:"smooth"}),children:(0,W.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,W.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,W.jsx)("button",{className:"tg-df-scroll-btn right",style:{display:A?"flex":"none"},onClick:()=>d.current?.scrollBy({left:200,behavior:"smooth"}),children:(0,W.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,W.jsx)("path",{d:"M9 18l6-6-6-6"})})}),(0,W.jsxs)("div",{className:"tg-df-filters",ref:d,onScroll:p,children:[(0,W.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-legacy-price-wrapper",style:{display:f!==!1?"flex":"none"},children:[(0,W.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,W.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,W.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-price-filter","aria-label":"Filter Prices",value:u||"all",onChange:y=>r?.(y.target.value),children:[(0,W.jsx)("option",{value:"all",children:"All Prices"}),(0,W.jsx)("option",{value:"under50",children:"Under $50"}),(0,W.jsx)("option",{value:"50_100",children:"$50 - $100"}),(0,W.jsx)("option",{value:"100_200",children:"$100 - $200"}),(0,W.jsx)("option",{value:"200_500",children:"$200 - $500"}),(0,W.jsx)("option",{value:"over500",children:"Over $500"})]})]}),(0,W.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-discount-filter-wrapper",style:{display:f!==!1&&!s?"flex":"none"},children:[(0,W.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,W.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,W.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-discount-filter","aria-label":"Discount Amount",value:n||"all",onChange:y=>i?.(y.target.value),children:[(0,W.jsx)("option",{value:"all",children:"Any discount"}),[5,10,15,20,25,30,40,50,60,70].map(y=>(0,W.jsxs)("option",{value:y,children:["Min ",y,"%"]},y))]})]}),(0,W.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-review-sort-wrapper",style:{display:s?"flex":"none"},children:[(0,W.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,W.jsx)("path",{d:"M4 7h16M7 12h10m-7 5h4"})}),(0,W.jsx)("select",{className:"tg-df-filter-select",id:"tg-df-review-sort","aria-label":"Sort Reviews",value:g,onChange:y=>o?.(y.target.value),children:h.map(y=>(0,W.jsx)("option",{value:y.value,children:y.label},y.value))})]})]})]})})}var be=B(ft(),1);function kr(e,t){return e.filter(n=>{let a=n.handle.toLowerCase(),l=n.fullName.toLowerCase(),i=n.name.toLowerCase();return t.some(r=>{let o=r.articleauthorhandle||[],u=r.articleauthor||[],c=r.articleauthortext||[];return[...o,...u,...c].some(s=>{let f=String(s||"").toLowerCase();return f===a||f===l||f===i})})})}function Yu(e,t){return e.map((n,a)=>({index:a,profile:n,productCount:t[n.handle]||0})).sort((n,a)=>a.productCount-n.productCount||n.index-a.index).map(({profile:n})=>n)}function Vu(e,t){return e==="all-authors"||t==="all-authors"||t==="All authors"||!e&&!t}function Xu(e,t,n){let a=e;if((t||n)&&t!=="all-authors"&&n!=="all-authors"&&n!=="All authors"){if(t){let l=t.toLowerCase(),i=e.filter(r=>r.articleauthorhandle&&r.articleauthorhandle.some(o=>o.toLowerCase()===l));if(i.length>0)a=i;else if(n){let r=n.toLowerCase(),o=e.filter(u=>u.articleauthor&&u.articleauthor.some(c=>c.toLowerCase()===r));o.length>0&&(a=o)}}else if(n){let l=n.toLowerCase();a=e.filter(i=>i.articleauthor&&i.articleauthor.some(r=>r.toLowerCase()===l))}}return a}function sf(e,t,n){let a=0;if(t&&e.articleauthorhandle){let l=e.articleauthorhandle.findIndex(i=>i.toLowerCase()===t.toLowerCase());l>=0&&(a=l)}else if(n&&e.articleauthor){let l=e.articleauthor.findIndex(i=>i.toLowerCase()===n.toLowerCase());l>=0&&(a=l)}return a}function Qu(e,t,n){let a=sf(e,t,n),l=i=>typeof i=="string"?ee(i):i||"";return{authorName:e.articleauthortext?l(e.articleauthortext[a]):e.articleauthor?l(e.articleauthor[a]):"",authorRole:e.articleauthorrole?l(e.articleauthorrole[a]):"",authorImage:e.articleauthormedia?e.articleauthormedia[a]:""}}function Lr(e,t){let n=new Map;return e.forEach(a=>{if(!a.articleauthor)return;let l=t;if(a.documenturl)try{let f=new URL(a.documenturl).hostname.replace("www.","").split(".");f.length>0&&(l=f[0].toLowerCase())}catch{}let i=a.articleauthorhandle||[],r=a.articleauthor||[],o=a.articleauthortext||[],u=a.articleauthorrole||[],c=a.articleauthormedia||[];r.forEach((s,f)=>{if(!s||s==="null"||s.toLowerCase()==="all authors")return;let d=i[f]&&i[f]!=="null"?i[f]:s.toLowerCase().replace(/\s+/g,"-");if(!d||d==="null")return;let m=o[f]&&o[f]!=="null"?o[f]:s,v=u[f]&&u[f]!=="null"?u[f]:"",A=ee(String(m)),b=ee(String(v)),h=c[f]&&c[f]!=="null"?c[f]:"",g=A.split(" ")[0],p=_r(a,f,"short"),y=_r(a,f,"long"),C=Uu(a,f),R=n.get(d);!R&&A&&h?n.set(d,{...y?{bioLong:y}:{},...p?{bioShort:p}:{},name:g,fullName:A,handle:d,role:b,image:h,brandKey:l,...C.length>0?{socialNetworks:C}:{}}):R&&(!R.bioShort&&p&&(R.bioShort=p),!R.bioLong&&y&&(R.bioLong=y),!R.socialNetworks?.length&&C.length>0&&(R.socialNetworks=C))})}),Array.from(n.values())}var E=B(O(),1);function z0(e){let t=(0,be.useRef)(""),n=(0,be.useRef)(null),a=(0,be.useCallback)(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),l=(0,be.useCallback)(r=>{a(),t.current=r},[a]),i=(0,be.useCallback)((r,o,u=!1)=>{if(!e)return;if(r===t.current){a();return}let c=()=>{n.current=null,t.current=r,e(o)};a(),u?c():n.current=window.setTimeout(c,350)},[a,e]);return(0,be.useEffect)(()=>a,[a]),{save:i,synchronise:l}}function H0({contentKey:e,defaultText:t,kind:n,onChange:a,value:l}){let i=(0,be.useRef)(null),r=(0,be.useRef)(e),[o,u]=(0,be.useState)(!1),c=l??t,s=!!a,{save:f,synchronise:d}=z0(a);(0,be.useLayoutEffect)(()=>{let g=r.current!==e;i.current&&(g||document.activeElement!==i.current)&&(i.current.innerHTML!==c&&(i.current.innerHTML=c),d(c)),r.current=e},[e,d,c]);let m=(g=!1)=>{if(!i.current)return;let p=i.current.innerHTML;f(p,p===t?void 0:p,g)},v=(g,p)=>{document.execCommand(g,!1,p),m(!0)},A=n==="kicker"?{fontSize:"0.875rem",color:"#6B7280",fontStyle:"normal",margin:"0 0 0.25rem 0"}:{fontSize:"2.25rem",fontWeight:300,color:"#111827",margin:"0 0 0.25rem 0",lineHeight:1.1,letterSpacing:"-0.02em"},b=n==="kicker"?"tg-df-author-curated-by tg-df-author-kicker":"tg-df-author-name",h=()=>n==="kicker"?(0,E.jsx)("p",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}}):(0,E.jsx)("h2",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}});return s?(0,E.jsxs)("div",{className:"tg-df-author-header-text-shell",style:{position:"relative"},children:[o&&(0,E.jsxs)("div",{className:"tg-df-author-header-text-toolbar",role:"toolbar","aria-label":`${n==="kicker"?"Shop by text":"Site or author name"} formatting`,style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"0.25rem",margin:"0 auto 0.375rem",width:"fit-content",padding:"0.25rem 0.5rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",fontSize:"11px",zIndex:10},children:[(0,E.jsx)("span",{style:{color:"#64748b",padding:"2px 2px 2px 0"},children:"Editing"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("bold"),title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("italic"),title:"Italic",children:(0,E.jsx)("em",{children:"I"})}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{let g=prompt("Enter URL:");g&&v("createLink",g)},title:"Add link",children:"\u{1F517}"}),l!==void 0&&(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{i.current&&(i.current.innerHTML=t),d(t),a?.(void 0)},title:"Restore default",children:"Reset"})]}),h()]}):h()}function i2({contentKey:e,initialBio:t,defaultPlaceholder:n,onBioChange:a,stabilizeHeight:l=!1}){let r=(0,be.useRef)(null),o=(0,be.useRef)(e),u=(0,be.useRef)(n),c=(0,be.useRef)(!1),[s,f]=(0,be.useState)(!1),[d,m]=(0,be.useState)(!1),[v,A]=(0,be.useState)(!1),b=t||n,h=l&&b.replace(/<[^>]*>/g,"").trim().length>240,g=!!a,{save:p,synchronise:y}=z0(a);(0,be.useLayoutEffect)(()=>{let w=o.current!==e,D=u.current!==n;w&&(c.current=!1);let k=!t&&D&&!c.current;r.current&&(w||document.activeElement!==r.current||k)&&(r.current.innerHTML!==b&&(r.current.innerHTML=b),y(b)),o.current=e,u.current=n},[b,e,n,t,y]),(0,be.useLayoutEffect)(()=>{m(!1)},[e]),(0,be.useLayoutEffect)(()=>{if(!h||!r.current){A(!1);return}let w=r.current,D=()=>{A(w.scrollHeight>w.clientHeight+1)};if(D(),typeof ResizeObserver>"u")return;let k=new ResizeObserver(D);return k.observe(w),()=>k.disconnect()},[b,e,d,h]);let C=(w,D=null)=>{if(c.current=!0,document.execCommand(w,!1,D||void 0),r.current){let k=r.current.innerHTML;p(k,k===n?"":k,!0)}},R=(w=!1)=>{if(!r.current)return;let D=r.current.innerHTML;p(D,D===n?"":D,w)};return(0,E.jsxs)("div",{style:{position:"relative",maxWidth:"42rem",margin:"0 auto 0.5rem auto",padding:"0.25rem 0.5rem"},className:`tg-df-author-bio-shell${l?" tg-df-author-bio-shell--stable":""}`,children:[g&&s&&(0,E.jsxs)("div",{role:"toolbar","aria-label":"Introduction text formatting",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"0.375rem",marginBottom:"0.5rem",padding:"0.25rem 0.625rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",width:"fit-content",margin:"0 auto 0.5rem auto",fontSize:"12px",userSelect:"none",zIndex:10},children:[(0,E.jsx)("span",{style:{fontSize:"11px",color:"#64748b",fontWeight:500,marginRight:"2px"},children:"Editing \u2014 saves when you click away"}),(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:()=>C("bold"),style:{fontWeight:"bold",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:()=>C("italic"),style:{fontStyle:"italic",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Italic",children:"I"}),(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:()=>{let w=prompt("Enter URL:");w&&C("createLink",w)},style:{padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Add Link",children:"\u{1F517}"}),t&&(0,E.jsx)("button",{type:"button",onMouseDown:w=>w.preventDefault(),onClick:w=>{w.preventDefault(),w.stopPropagation(),r.current&&(r.current.innerHTML=n),c.current=!1,y(n),a&&a("")},style:{fontSize:"10px",padding:"2px 8px",borderRadius:"4px",background:"#fee2e2",color:"#991b1b",cursor:"pointer",border:"1px solid #fca5a5"},title:"Reset Bio",children:"Reset"})]}),(0,E.jsx)("div",{ref:r,contentEditable:g?!0:void 0,suppressContentEditableWarning:g,onFocus:g?()=>{f(!0)}:void 0,onBlur:g?()=>{f(!1),R(!0),c.current=!1}:void 0,onInput:g?()=>{c.current=!0}:void 0,className:`tg-df-author-bio ${g?"wysiwyg-bio-editable":"tg-df-author-bio--static"}${h?d?" tg-df-author-bio--expanded":" tg-df-author-bio--clamped":""}`,style:{color:"#4b5563",lineHeight:1.6,fontWeight:300,fontSize:"0.9375rem",textAlign:"center",outline:g&&s?"2px solid #3b82f6":"none",borderRadius:"6px",padding:"0.375rem 0.5rem",cursor:g?"text":"default",transition:"all 0.15s ease-in-out"}}),h?(0,E.jsx)("div",{className:"tg-df-author-bio-toggle-slot",children:(0,E.jsx)("button",{type:"button",className:"tg-df-author-bio-toggle","aria-expanded":d,onClick:()=>m(w=>!w),style:{visibility:v||d?"visible":"hidden"},children:d?"Show less":"Read more"})}):null]})}function r2(e){let t=(e||"").toLowerCase();return t==="linkedin"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.28 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.75M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"})}):t==="twitter"||t==="x"?(0,E.jsx)("svg",{className:"icon-svg",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,E.jsx)("path",{fill:"currentColor",d:"M18 2h4l-8 9 9 11h-7l-5-7-6 7H2l7-9L1 2h7l5 6zm-1 18h2L7 4H5z"})}):t==="email"||t==="mail"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}),(0,E.jsx)("path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"})]}):t==="instagram"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"5",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"12",cy:"12",r:"4.25",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"17.4",cy:"6.7",r:"1.25",fill:"currentColor"})]}):t==="steam"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("circle",{fill:"#0f1618",cx:"12",cy:"12",r:"12"}),(0,E.jsx)("path",{d:"m18.22 8.9a2.269 2.269 0 1 1 -2.27-2.265 2.267 2.267 0 0 1 2.27 2.265zm2.258.005a4.534 4.534 0 0 1 -4.533 4.526h-.1l-4.087 2.911v.161a3.4 3.4 0 0 1 -6.74.669l-4.549-1.879c-.032-.109-.057-.219-.085-.329a11.973 11.973 0 0 1 -.384-2.964c0-.214.02-.423.032-.635 0-.1.008-.206.016-.308l6.394 2.643a3.385 3.385 0 0 1 1.915-.591c.065 0 .127 0 .191.005l2.865-4.145v-.062a4.533 4.533 0 0 1 9.066 0zm-9.763 6.618a2.55 2.55 0 0 0 -3.262-1.411l1.525.63a1.877 1.877 0 1 1 -1.446 3.464l-1.475-.606a2.529 2.529 0 0 0 1.315 1.25 2.559 2.559 0 0 0 3.339-1.374 2.526 2.526 0 0 0 .004-1.951zm8.251-6.618a3.021 3.021 0 1 0 -3.021 3.015 3.022 3.022 0 0 0 3.021-3.013z",fill:"#fff"})]}):t==="youtube"?(0,E.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"})}):t==="twitch"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("path",{d:"m24 12a12 12 0 1 1 -12-12 12 12 0 0 1 12 12z",fill:"#111"}),(0,E.jsx)("path",{d:"m12.308 17.167-1.833 1.833h-1.818v-1.833h-3.357v-9.733l.925-2.434h12.475v8.517l-3.648 3.65zm5.175-10.95h-10.043v8.824h2.743v1.833l1.817-1.833h3.342l2.14-2.126zm-5.483 6.083v-3.65h-1.218v3.65zm3.342 0v-3.65h-1.216v3.65z",fill:"#fff"})]}):t==="facebook"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m13.079 19h-2.9v-7h-1.441v-2.408h1.442v-1.456c0-1.96.813-3.136 3.136-3.136h1.933v2.408h-1.2c-.91 0-.965.35-.965.966v1.218h2.183l-.257 2.408h-1.931z",fill:"currentColor"})}):t==="pinterest"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.336 5c-3.822 0-5.754 2.744-5.754 5.025a3.065 3.065 0 0 0 1.652 3.066.279.279 0 0 0 .407-.2l.154-.644a.373.373 0 0 0-.113-.448 2.341 2.341 0 0 1-.532-1.582 3.812 3.812 0 0 1 3.961-3.849 3.009 3.009 0 0 1 3.346 3.08c0 2.323-1.022 4.283-2.547 4.283a1.253 1.253 0 0 1-1.273-1.554 17.616 17.616 0 0 0 .713-2.856 1.081 1.081 0 0 0-1.092-1.2c-.854 0-1.553.881-1.553 2.071a2.954 2.954 0 0 0 .266 1.274l-1.038 4.383a9.389 9.389 0 0 0-.027 3.065.109.109 0 0 0 .2.042 8.737 8.737 0 0 0 1.457-2.631l.561-2.212a2.3 2.3 0 0 0 1.959 1.008c2.59 0 4.34-2.366 4.34-5.516a4.8 4.8 0 0 0-5.087-4.605z",fill:"currentColor"})}):t==="substack"?(0,E.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z"})}):t==="threads"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12.186 24h-.007c-3.582-.024-6.332-1.22-8.173-3.555C2.26 18.212 1.5 15.228 1.5 11.83 1.5 8.16 2.673 5.097 4.902 2.935 7.026.877 10.02 0 13.565 0c3.784 0 6.81 1.028 8.995 3.056 2.008 1.862 3.013 4.417 2.91 7.391-.122 3.518-1.57 6.136-4.304 7.781-1.892 1.138-4.103 1.62-6.57 1.433-.122.392-.266.769-.434 1.127-.514 1.096-1.18 1.96-1.982 2.569-.884.67-1.933 1.01-3.118 1.01-1.34 0-2.42-.42-3.21-1.248-.78-.82-1.17-1.89-1.17-3.18 0-1.512.52-2.73 1.545-3.62 1.018-.883 2.45-1.33 4.258-1.33.56 0 1.11.04 1.63.12-.04-.53-.13-1.02-.27-1.46-.26-.81-.71-1.45-1.34-1.92-.62-.47-1.42-.71-2.38-.71-1.09 0-2.02.29-2.77.87-.29.22-.68.17-.9-.12l-.76-1.03c-.22-.3-.16-.71.13-.93C7.43 5.37 8.95 4.9 10.8 4.9c1.64 0 2.99.41 4.02 1.22 1.04.81 1.73 1.93 2.06 3.33.15.65.25 1.42.3 2.31 1.68-.31 3.05-1.05 4.08-2.2 1.01-1.13 1.52-2.58 1.52-4.31 0-2.43-.84-4.32-2.5-5.62C18.63 1.32 16.32.5 13.56.5c-3.03 0-5.54.73-7.27 2.21C4.48 4.27 3.5 6.78 3.5 10c0 3.1.66 5.62 1.96 7.49 1.34 1.93 3.38 2.92 6.07 2.95 1.76.02 3.32-.34 4.64-1.07.28-.15.63-.05.78.22l.55.98c.15.28.05.63-.22.78-1.63.9-3.55 1.35-5.7 1.35z"})}):t==="tiktok"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.308 5.012c.763-.012 1.522 0 2.281-.012a3.636 3.636 0 0 0 1.02 2.434 4.12 4.12 0 0 0 2.473 1.043v2.349a6.177 6.177 0 0 1-2.449-.564 7.207 7.207 0 0 1-.947-.543c0 1.705.008 3.406-.01 5.105a4.442 4.442 0 0 1-.789 2.3 4.343 4.343 0 0 1-3.448 1.872 4.254 4.254 0 0 1-2.379-.6 4.393 4.393 0 0 1-2.127-3.331c-.014-.292-.019-.584-.007-.868a4.395 4.395 0 0 1 5.091-3.9c.013.864-.021 1.727-.021 2.591a2.007 2.007 0 0 0-2.558 1.237 2.316 2.316 0 0 0-.079.939 1.992 1.992 0 0 0 3.658.736 1.39 1.39 0 0 0 .239-.62c.057-1.043.034-2.082.041-3.126.006-2.351-.007-4.7.011-7.041z",fill:"currentColor"})}):t==="bluesky"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.879.139 2.588-.02 3.868.002 5.03c.08 4.201 1.84 10.024 3.931 12.397 2.091 2.373 4.545 1.573 5.467.927.817-.573 1.564-1.611 2.6-2.92 1.036 1.309 1.783 2.347 2.6 2.92.922.646 3.376 1.446 5.467-.927 2.091-2.373 3.851-8.196 3.931-12.397.022-1.162-.137-2.442-.9-3.151-.659-.613-1.664-.935-4.3-1.074C16.046 4.747 13.087 8.686 12 10.8z"})}):t==="github"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"})}):t==="rss"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("path",{d:"M4 11a9 9 0 0 1 9 9"}),(0,E.jsx)("path",{d:"M4 4a16 16 0 0 1 16 16"}),(0,E.jsx)("circle",{cx:"5",cy:"19",r:"1"})]}):(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,E.jsx)("path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"}),(0,E.jsx)("path",{d:"M2 12h20"})]})}function U0({authorCount:e=0,authorArticlesList:t,authorBioLength:n,customBio:a,customHeaderKicker:l,customHeaderTitle:i,effectiveAuthorHandle:r,effectiveAuthorName:o,isReviewWidget:u=!1,onBioChange:c,onHeaderKickerChange:s,onHeaderTitleChange:f,selectedProfile:d,showAuthorBio:m=!0,showAuthorIdentity:v=!0,showSocialButtons:A=!0,stabilizeBio:b=!1,totalDealCount:h=0,website:g}){let p=Vu(r,o),y=g||"tomsguide",C=Gu[y]||y,R=Nr[y],T=r?.toLowerCase(),M=o?.toLowerCase(),w=t.find(Be=>T&&Be.articleauthorhandle?.some(Je=>Je?.toLowerCase()===T)||M&&Be.articleauthor?.some(Je=>Je?.toLowerCase()===M))||null,D=w?sf(w,r,o):0,k=d?.image||(w?c0(w,D):""),se=d?n==="short"?d.bioShort||"":d.bioLong||d.bioShort||"":w?_r(w,D,n):"",I=p?`Our team is dedicated to researching, reviewing and recommending the latest and best products in all the categories that matter to you. Below you can shop the latest ${h} ${u?"review ":""}recommendations from ${e} ${C} ${u?"editor tests":"editors"}.`:se||`Handpicked deals and recommendations curated by ${o||"our expert editorial team"}.`,j=d?.role||"",He=p?y0[y]||[]:d?.socialNetworks||[];!p&&w&&(j||(j=u0(w,D)),He.length===0&&(He=Uu(w,D)));let ze=d?.fullName||o||"Author Name",St=p?`site:${y}`:`author:${d?.handle||r||ze}`,Ie=A&&He.length>0,rn=!p&&!!j||Ie;return(0,E.jsxs)("div",{className:"tg-df-author-card",style:{textAlign:"center",padding:"1.75rem 1rem 0.25rem 1rem",margin:"0 auto",maxWidth:"48rem"},children:[v&&(p?(0,E.jsx)("div",{className:"tg-df-author-media-slot tg-df-author-image-container",style:{margin:"0 auto 0.75rem auto",textAlign:"center",minHeight:"180px",display:"flex",alignItems:"center",justifyContent:"center"},children:R?(0,E.jsx)("img",{src:R,alt:C,className:"tg-df-site-logo",style:{maxHeight:"150px",maxWidth:"520px",objectFit:"contain",margin:"0 auto",display:"block"}}):(0,E.jsx)("div",{style:{fontSize:"1.75rem",fontWeight:700,color:"#111827"},children:C})}):(0,E.jsx)("div",{className:"tg-df-author-media-slot",children:(0,E.jsxs)("div",{className:"tg-df-author-profile-image-wrapper",children:[k?(0,E.jsx)("img",{src:ri(k),alt:ze,className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",objectFit:"cover",display:"block"}}):(0,E.jsx)("div",{className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",background:"#e2e8f0",display:"block"}}),R?(0,E.jsx)("img",{src:R,alt:"",className:"tg-df-author-profile-brand-logo"}):null]})})),v&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(H0,{contentKey:`${St}:kicker`,defaultText:u?"Reviews shop by":"Shop by",kind:"kicker",onChange:s,value:l}),(0,E.jsx)(H0,{contentKey:`${St}:title`,defaultText:p?C:ze,kind:"title",onChange:f,value:i}),rn&&(0,E.jsxs)("div",{className:`tg-df-author-meta-slot${p?" tg-df-author-meta-slot--site":""}${Ie?"":" tg-df-author-meta-slot--no-social"}`,children:[!p&&j?(0,E.jsx)("div",{className:"tg-df-author-role",id:"tg-df-author-role-display",style:{fontSize:"0.9375rem",fontWeight:500,color:"var(--tg-df-blue, #1F69FF)",margin:"0 0 0.5rem 0",lineHeight:1.3},children:j}):null,Ie?(0,E.jsx)("div",{className:"tg-df-author-social-links",children:He.map(Be=>(0,E.jsx)("a",{href:Be.href,target:"_blank",rel:"noopener noreferrer",title:Be.label,"aria-label":Be.label,className:"tg-df-author-social-btn","data-social-key":Be.key.toLowerCase(),children:r2(Be.key)},Be.key))}):null]})]}),m&&(0,E.jsx)(i2,{contentKey:St,initialBio:a,defaultPlaceholder:I,onBioChange:c,stabilizeHeight:b})]})}var te=B(O(),1);function df(e){if(!e||typeof e!="object")return"";if(e.type==="voucher_code"&&e.display_value)return e.display_value;let t=Array.isArray(e)?e:Object.keys(e).filter(n=>Object.prototype.hasOwnProperty.call(e,n)).map(n=>e[n]);for(let n of t){let a=df(n);if(a)return a}return""}function o2({endTime:e}){if(!e)return null;let t=e;!isNaN(Number(t))&&String(t).length===10&&(t=Number(t)*1e3);let n=new Date(t),a=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"});return(0,te.jsxs)("span",{className:"tg-df-voucher-expiry",children:[(0,te.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginRight:"4px"},children:[(0,te.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,te.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),"Expires ",a.format(n)]})}function G0({error:e,loading:t,merchant:n,onClose:a,vouchers:l}){return(0,te.jsx)("div",{className:`tg-df-modal-backdrop ${n?"active":""}`,onClick:i=>{i.target===i.currentTarget&&a()},children:(0,te.jsxs)("div",{className:"tg-df-modal",children:[(0,te.jsxs)("div",{className:"tg-df-modal-header",children:[(0,te.jsx)("h3",{className:"tg-df-modal-title",children:n?`${n} Coupons & Deals`:"Available Coupons & Deals"}),(0,te.jsx)("button",{className:"tg-df-modal-close",onClick:a,children:(0,te.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,te.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,te.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),(0,te.jsx)("div",{className:"tg-df-modal-body",children:t?(0,te.jsx)("div",{className:"tg-df-message",children:(0,te.jsx)("div",{className:"tg-df-coupon-spinner",style:{width:"24px",height:"24px",borderColor:"#ccc",borderTopColor:"#3b82f6"}})}):e?(0,te.jsx)("div",{className:"tg-df-message",children:"Failed to load vouchers."}):l.length===0?(0,te.jsxs)("div",{className:"tg-df-message",children:["No active vouchers found for ",n,"."]}):l.map((i,r)=>{let o=i.offer?.name||i.offer?.title||i.name||i.title||i.model_name||"Voucher",u=i.offer?.link||i.offer?.url||i.link||i.url||"#",c=i.merchant,s=Array.isArray(c)?c[0]?.logo_url||"":c?.logo_url||"",f=df(i.offer)||df(i)||i.offer?.voucher_code||i.voucher_code||"",d=i.offer?.end_time||i.end_time||"";return(0,te.jsxs)("a",{href:u,target:"_blank",rel:"noopener nofollow",className:"tg-df-voucher-item",children:[s?(0,te.jsx)("img",{src:s,alt:"Logo",className:"tg-df-voucher-logo"}):(0,te.jsx)("div",{className:"tg-df-voucher-logo",style:{background:"#e2e8f0"}}),(0,te.jsxs)("div",{className:"tg-df-voucher-content",children:[(0,te.jsx)("h4",{className:"tg-df-voucher-title",children:o}),(0,te.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px",marginTop:"8px"},children:[f&&(0,te.jsxs)("span",{className:"tg-df-voucher-code",title:"Copy to clipboard",onClick:m=>{m.preventDefault(),m.stopPropagation();let v=m.currentTarget;navigator.clipboard.writeText(f).then(()=>{v.classList.add("copied");let A=v.querySelector(".tg-df-voucher-code-text"),b=v.querySelector(".tg-df-voucher-copy-icon"),h=A.innerText,g=b.innerHTML;A.innerText="Copied!",b.innerHTML='<polyline points="20 6 9 17 4 12"><\/polyline>',setTimeout(()=>{v.classList.remove("copied"),A&&(A.innerText=h),b&&(b.innerHTML=g)},2e3)})},children:[(0,te.jsx)("span",{className:"tg-df-voucher-code-text",children:f}),(0,te.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:"6px",flexShrink:0},className:"tg-df-voucher-copy-icon",children:[(0,te.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,te.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})]}),d&&(0,te.jsx)(o2,{endTime:d})]})]})]},r)})})]})})}var N=B(ft(),1);function ci(e){if(!e||!e.articlepage)return[];try{let t=e.articlepage;if(!Array.isArray(t))return typeof t=="string"?JSON.parse(t):t;if(t.length===0)return[];let n=t[0];return typeof n=="string"?JSON.parse(n):Array.isArray(n)?n:n&&typeof n=="object"&&"type"in n?t:n}catch{return[]}}function si(e,t=!1,{includeCollections:n=!0,includeDeals:a=!0}={}){let l=t?e.filter(r=>r.type==="buying-guide"):[];if(l.length>0)return l;let i=e.filter(r=>r.type==="deal"||r.type==="featured-product");return a&&!n&&!t?i.filter(r=>r.type==="deal"):i}function di(e,t){if(!t||t.length===0)return!0;let n=e&&(e.brand||e.retailer)||"";if(!n)return!1;let a=n.replace(/^\d+\.\s*/,"").trim().toLowerCase();return t.some(l=>{let i=l.trim().toLowerCase();return a===i||a.startsWith(`${i} `)||a.includes(i)||i.includes(a)})}function wt(e){return!e||e==="auto"?"US":e}function an(e){return e==="GB"||e==="UK"?"GBP":e==="AU"?"AUD":e==="CA"?"CAD":["DE","FR","IT","ES","NL"].includes(e)?"EUR":"USD"}function P0(e,t){if(e.isBuyingGuideProduct||e.isReviewProduct)return!0;if(t==="unavailable")return!1;let n=String(e.isoCurrency||e.currency||"").trim().toUpperCase();return({$:"USD",A$:"AUD",CA$:"CAD","\xA3":"GBP","\u20AC":"EUR"}[n]||n)===an(t)}function fi(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=a?n.currency||(n.price&&typeof n.price=="object"?n.price.currency:""):l.currency||(typeof l=="string"?l:"")||n.currency||"";!i&&n.variants&&n.variants.length>0&&(i=n.variants[0].currency||"");let r="$",o="USD",u=(i||"").toString().toUpperCase().trim();return u==="GBP"||u==="\xA3"||u.includes("POUND")||u.includes("163")?(r="\xA3",o="GBP"):u==="EUR"||u==="\u20AC"||u.includes("EURO")||u.includes("8364")?(r="\u20AC",o="EUR"):u==="AUD"||u==="A$"?(r="A$",o="AUD"):u==="CAD"||u==="CA$"?(r="CA$",o="CAD"):u==="USD"||u==="$"||u.includes("DOLLAR")||u.includes("36")?(r="$",o="USD"):(o=an(t),o==="GBP"?r="\xA3":o==="AUD"?r="A$":o==="CAD"?r="CA$":o==="EUR"&&(r="\u20AC")),{isoCurr:o,currencyStr:r}}function Ku(e){let t=e.data||{},n=e.type==="featured-product",a=t.price||{},l=0,i=0;return n?(l=typeof a=="number"?a:a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):t.msrp?parseFloat(t.msrp):0):(l=a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):0),{rawPrice:l,rawMsrp:i}}function Sa(e,t){if(!t||t==="all"||e<=0)return!0;if(t==="under50"&&e>=50||t==="over50"&&e<=50||t==="over30"&&e<=30||t==="over500"&&e<=500)return!1;if(t.includes("_")){let[n,a]=t.split("_").map(Number);if(n&&e<n||a&&e>a)return!1}return!0}function Ca(e,t,n){if(!n||n==="0"||n==="all")return!0;let a=parseInt(n);return!(!isNaN(a)&&a>0&&(!t||t<=e||Math.round((1-e/t)*100)<a))}var Zu=[0,50,100,150,200,250,300,350,400,450],ff={parameter:"articleControlTag",value:"type_buying_guide"},u2={includeAllContent:!1,pageStarts:Zu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"}]},c2={pcgamer:{includeAllContent:!1,pageStarts:Zu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["deals","type_deal","channel_gaming_hardware"]}],buyingGuideScopes:[ff]},homesandgardens:{includeAllContent:!1,pageStarts:Zu,scopes:[{parameter:"articleType",value:"collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"sig-product-collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"van-hawk-collection-widget",inventoryKind:"collections"},{parameter:"articleControlTag",value:"shopping",requiredArticleType:"news",inventoryKind:"collections"},{parameter:"articleType",value:"deals",inventoryKind:"deals"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["shopping","type_deal"],inventoryKind:"deals"}],buyingGuideScopes:[{parameter:"articleType",value:"buying guide"},ff]},whowhatwear:{includeAllContent:!0,pageStarts:Zu,scopes:[{}]}};function Wu(e,{includeBuyingGuideProducts:t=!1,includeCollections:n=!0,includeDeals:a=!0}={}){let l=c2[e]||u2;if(l.includeAllContent)return l;let i=l.scopes.filter(r=>r.inventoryKind==="collections"?n:r.inventoryKind==="deals"?a:r.value==="sig-product-collection"?n:a);return t?{...l,scopes:[...i,...l.buyingGuideScopes||[ff]]}:{...l,scopes:i}}function gf(e){if(Array.isArray(e))return e;let t=e.data;return t&&Array.isArray(t)?t:[]}function q0(e){let t=new Set;return e.filter(n=>{let a=n.id||n.articleid||n.url;return!a||t.has(a)?!1:(t.add(a),!0)})}function Zt(e){return typeof e.articletype=="string"?e.articletype.toLowerCase():Array.isArray(e.articletype)&&e.articletype.length>0?e.articletype[0].toLowerCase():""}function Hr(e){return String(e||"").toLowerCase().replace(/[^a-z0-9]/g,"")}function mf(e){return[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]].map(Hr)}function s2(e){return Zt(e)==="review"&&mf(e).some(t=>t.includes("channelgaminghardware"))}function F0(e,t,n){let a=Zt(e),l=mf(e),i=c=>l.some(s=>s.includes(c)),r=a==="news"&&i("shopping")&&i("deal")&&i("typedeal"),o=a==="deals"||r,u=a==="collection"||i("sigproductcollection")||i("vanhawkcollectionwidget")||a==="news"&&i("shopping")&&!r||a==="idea"&&i("shopping")&&(i("sigproductcollection")||i("vanhawkcollectionwidget"));return t&&o||n&&u}function el(e,t=!0,n=!0,a){if(a==="homesandgardens")return F0(e,t,n);let l=Zt(e),i=mf(e),r=l==="deals"||i.some(u=>u.includes("typedeal")),o=i.some(u=>u.includes("sigproductcollection"));return t&&r||n&&o}function j0(e,t,n=!1,a=!1,l=!0,i=!0){if(a&&Zt(e)==="review")return t!=="pcgamer"||s2(e);if(t==="homesandgardens")return Zt(e)==="buying guide"?n:F0(e,i,l);let r=Wu(t,{includeBuyingGuideProducts:n,includeCollections:l,includeDeals:i});if(r.includeAllContent)return i&&l?!0:n||el(e,i,l);let o=Zt(e),u=[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]],c=f=>!f.requiredArticleType||o===f.requiredArticleType.toLowerCase(),s=f=>!f.requiredControlTags||f.requiredControlTags.every(d=>u.some(m=>typeof m=="string"&&Hr(m).includes(Hr(d))));return r.scopes.some(f=>!c(f)||!s(f)?!1:f.parameter==="articleType"?o===f.value.toLowerCase():f.parameter==="articleControlTag"?u.some(d=>typeof d=="string"&&Hr(d).includes(Hr(f.value))):!1)}function hf(e,t){let n=e.map(a=>({...a}));return t.filter(a=>(a.isBuyingGuideProduct||a.isReviewProduct)&&a.brand).forEach(a=>{let l=String(a.brand).trim();if(!l)return;let i=n.find(r=>r.formatted_value.toLowerCase()===l.toLowerCase());i?i.count++:n.push({formatted_value:l,count:1})}),n.sort((a,l)=>l.count-a.count)}function Iu(e,t){let n={};return e.forEach(a=>{if(!a.articlepage)return;let l=ci(a),i=si(l,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});(t.includeDeals===!1||t.includeCollections===!1)&&!i.some(r=>r.type==="buying-guide")&&!el(a,t.includeDeals,t.includeCollections,t.website)||i.forEach(r=>{if(fi(r,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:o,rawMsrp:u}=Ku(r);if(!Sa(o,t.priceRange)||!Ca(o,u,t.discountAmount))return;let c=r.data||{},s=c.brand||c.retailer;if(!s)return;let f=s.replace(/^\d+\.\s*/,"").trim(),d=f.toLowerCase(),m=Object.keys(n).find(v=>v.toLowerCase()===d);m?n[m]++:(f===f.toLowerCase()&&(f=f.replace(/\b\w/g,v=>v.toUpperCase())),n[f]=1)})}),Object.keys(n).map(a=>({formatted_value:a,count:n[a]})).sort((a,l)=>l.count-a.count)}function d2(e){return String(e||"").trim().toLowerCase()}function Ju(e){return(Array.isArray(e)?e:[e]).map(d2).filter(Boolean)}function pf(e){let t=Ju(e.articletype),n=[...Ju(e.articlecontroltag),...Ju(e.articletagtypetaghandle)];return t.includes("deals")||n.some(a=>a.replace(/[\s-]+/g,"_")==="type_deal")}function V0(e){let t=Array.isArray(e)?e[0]:e,n=new Date(String(t||"")).getTime();return Number.isFinite(n)?n:null}function f2(e){for(let t of[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]){let n=V0(t);if(n!==null)return n}return null}function g2(e){for(let t of[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]){let n=V0(t);if(n!==null)return n}return null}function Y0(e){return Ju(e.articletype).includes("review")}function yf(e,t=new Date,n=0){let a=pf(e)?1:Y0(e)?36:n;if(a<=0)return!0;let l=Y0(e)?g2(e):f2(e);if(l===null)return!0;let i=new Date(t);return i.setMonth(i.getMonth()-a),l>=i.getTime()}function tl(e,t,n=0){return e.filter(a=>yf(a,t,n))}var m2=15;function Q0(e){return Array.isArray(e.articlemedia)?e.articlemedia[0]:""}function zr(e){return Array.isArray(e.documenturl)?e.documenturl[0]:e.documenturl||""}function h2(e){return kt(String(e||"").replace(/^\d+\.\s*/,"").trim())}function tt(e){return Array.isArray(e)?e.map(tt).find(Boolean)||"":typeof e=="string"||typeof e=="number"?String(e).trim():""}function vf(e,t=!1){return(t?[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]:[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]).map(tt).find(Boolean)||""}function p2(e,t,n){let a=tt(e).match(/^\s*(\d+)\s*[.)]\s*/)?.[1];return a||[t.rank,t.position,t.number,t.productNumber,t.product_number].map(tt).map(i=>i.match(/^\s*(\d+)\s*$/)?.[1]||"").find(Boolean)||String(n+1)}function y2(e){let t=tt(e);try{t=new URL(t).pathname}catch{}return t=t.split(/[?#]/)[0].split("/").filter(Boolean).at(-1)||"",t.split(/[-_]+/).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function v2(e){return tt(e.documenthandle)||tt(e.document_handle)||zr(e)||tt(e.documentname)||tt(e.documentnametext)}function b2(e,t){if(!t)return"";let n=t.length>m2?"Ranked":t;return`#${e} ${n}`}function A2(e){if(typeof e=="object"&&e)return String(e["data-model-name"]||"");try{return String(JSON.parse(String(e||""))["data-model-name"]||"")}catch{return""}}function w2(e){let t=e.brand||e.productBrand||e.manufacturer||e.maker||"";return typeof t=="string"?kt(t.replace(/^\d+\.\s*/,"").trim()):""}function S2(e){let t=e.price&&typeof e.price=="object"?e.price:{},n=Number(t.salePrice||t.price||e.salePrice||e.current_price||(typeof e.price=="number"?e.price:0)),a=Number(t.wasPrice||t.msrp||e.was_price||e.msrp||0),l=e.url||e.link?.url||e.link?.href||"";return{currency:t.currency||e.currency||"",rawMsrp:Number.isFinite(a)?a:0,rawPrice:Number.isFinite(n)?n:0,url:l}}function bf(e){let t=e?.review||{},n=t.rating??t.starRating??t.score??e?.rating??e?.starRating??e?.score,a=Number(n);if(!Number.isFinite(a)||a<=0)return null;let l=a>5?a/20:a;return Math.min(l,5)}function K0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,imageUrl:i}){let r=t.data||{},o=r.review||{},u=h2(r.title),c=p2(r.title,r,a),s=y2(v2(e)),f=zr(e),d=S2(r),m=!!d.url,v=m?d.url:o.url||f,A=i||Q0(e);return{id:`airedale-buying-guide-${n}-${a}`,url:v,image:A,fallbackImage:A,title:u,brand:w2(r),productName:u,merchant:"",rawPrice:d.rawPrice,rawMsrp:d.rawMsrp,price:d.rawPrice>0?String(d.rawPrice):"",msrp:d.rawMsrp>0?String(d.rawMsrp):"",currency:d.currency,isoCurrency:"",isCheckPrice:d.rawPrice<=0,savingLabel:"",savingType:"none",isPrime:!1,starRating:bf(r),description:"",text:"",subtitle:kt(r.subtitle||""),pros:Array.isArray(r.pros)?r.pros:[],cons:Array.isArray(r.cons)?r.cons:[],...l,documentUrl:zr(e),modifiedDate:vf(e),isFeatured:!1,isBuyingGuideProduct:!0,buyingGuideBadge:b2(c,s),hawkModelName:A2(r.hawk),hasCommerceOffer:m,sourceArticleUrl:f}}function C2(e){return gi(e)||tt(e.documentnametext)||tt(e.documentname)}function $u(e){if(Array.isArray(e))return e.map($u).find(Boolean)||"";if(e&&typeof e=="object"){let n=e,a=tt(n["data-widget-type"]||n.dataWidgetType||n.widgetType).toLowerCase(),l=tt(n["data-model-name"]||n.dataModelName||n.modelName);return a==="review"&&l?l:Object.values(n).map($u).find(Boolean)||""}if(typeof e!="string")return"";let t=[e,e.replace(/\\"/g,'"').replace(/\\u0022/gi,'"')];for(let n of t){try{let l=$u(JSON.parse(n));if(l)return l}catch{}let a=n.match(/["']data-widget-type["']\s*:\s*["']review["'][\s\S]{0,1500}?["']data-model-name["']\s*:\s*["']([^"']+)["']/i);if(a?.[1])return a[1].trim()}return""}function gi(e){let t=tt(e.articlehawkmodels);if(t)return t;for(let n of[e.articlepage,e.articlebodypageblock,e.articlepageblock,e.fepjson,e.articlebodyclean]){let a=$u(n);if(a)return a}return""}function X0(e){return(Array.isArray(e)?e:[e]).map(t=>kt(tt(t))).filter(Boolean)}function Z0({article:e,articleIdentity:t,authorProfile:n}){let a=kt(gi(e)),l=kt(C2(e)),i=zr(e),r=Q0(e),o=kt(tt(e.productverdict));return{id:`airedale-review-${t}`,url:i,image:r,fallbackImage:r,title:l,brand:"",productName:l,merchant:"",rawPrice:0,rawMsrp:0,price:"",msrp:"",currency:"",isoCurrency:"",isCheckPrice:!0,savingLabel:"",savingType:"none",isPrime:!1,starRating:bf({rating:e.productrating}),description:o,text:o,...n,documentUrl:i,modifiedDate:vf(e,!0),isFeatured:!1,isReviewProduct:!0,hawkModelName:a||l,hasCommerceOffer:!1,sourceArticleUrl:i,pros:X0(e.productpros),cons:X0(e.productcons)}}function kt(e){return typeof e=="string"?ee(e):e}function W0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,currencyString:i,isoCurrency:r,presentation:o,pricing:u}){let c=t.data||{},{isFeatured:s,externalUrl:f,summaryTitle:d,description:m,imageUrl:v,merchantName:A}=o,{rawPrice:b,rawMsrp:h,savingLabel:g}=u;return{id:`airedale-${n}-${a}`,url:f,image:v,fallbackImage:v,title:kt(d),brand:kt(c.brand||""),productName:kt(c.productName||""),merchant:kt(A),rawPrice:b,rawMsrp:h,price:b>0?b.toString():"",msrp:h>0?h.toString():"",currency:i,isoCurrency:r,isCheckPrice:!b,savingLabel:g,savingType:h>b?"amount":"none",isPrime:!1,starRating:bf(c),description:kt(m),text:kt(c.text||""),...l,documentUrl:zr(e),modifiedDate:vf(e),isFeatured:s,hasCommerceOffer:!!f}}function I0(e,t){let n=t.data||{},a=t.type==="featured-product",l=n.link||{},i=n.image||{};n.brand&&(n.brand=n.brand.replace(/^\d+\.\s*/,"").trim());let r=a?n.url:l.href||null,o=a?n.name||n.brand:n.productName||l.label||(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),u=a?n.strapline||"":n.text||"";if(!a&&!n.productName&&n.text){let f=n.text.split(/<br\s*\/?>/i);if(f.length>1)o=f[0].replace(/<[^>]+>/g,"").trim(),u=f.slice(1).join(" ").replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();else{let d=n.text.match(/<strong>(.*?)<\/strong>/);d&&(o=d[1].replace(/<[^>]+>/g,"").trim(),o.endsWith(":")&&(o=o.slice(0,-1)))}}let c=a?i.mos:i.src||null;c?.startsWith("//")&&(c=`https:${c}`),u=u.replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").replace(/View Deal$/i,"").trim();let s=n.retailer||"";if(!s&&r)try{s=new URL(r).hostname.replace("www.","").split(".")[0],s=s.charAt(0).toUpperCase()+s.slice(1)}catch{}return s||(s="Retailer"),{isFeatured:a,externalUrl:r,summaryTitle:o,description:u,imageUrl:c,merchantName:s}}function J0(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=0,r=0;a?(i=typeof n.salePrice=="number"&&n.salePrice>0?n.salePrice:typeof n.price=="number"?n.price:0,r=typeof n.salePrice=="number"&&typeof n.price=="number"&&n.price>n.salePrice?n.price:0):(i=l.amount?parseFloat(l.amount):0,r=l.amountWas?parseFloat(l.amountWas):0);let o=0,u="";return i>0&&r>i&&(o=parseFloat((r-i).toFixed(2)),u=`Save ${t}${o}`),{rawPrice:i,rawMsrp:r,savingLabel:u}}function R2(e,t){let n=e.indexOf(t);if(n<1)return"";let a=e[n-1]?.data||{},i=a.slides?.[0]?.image||a.image||a;return i?.src||i?.mos||""}function Ur(e,{activeRegionCode:t,targetIso:n,selectedBrands:a,priceRange:l,discountAmount:i,authorHandle:r,authorName:o,createFallbackIdentity:u=Math.random,includeBuyingGuideProducts:c=!1,includeCollections:s=!0,includeDeals:f=!0,includeReviewProducts:d=!1,website:m}){let v=[],A=new Set;return e.forEach(b=>{if(d&&Zt(b)==="review"){v.push(Z0({article:b,articleIdentity:b.id||u(),authorProfile:Qu(b,r,o)}));return}if(!b.articlepage)return;let h=ci(b),g=si(h,c,{includeCollections:s,includeDeals:f});(f===!1||s===!1)&&!g.some(p=>p.type==="buying-guide")&&!el(b,f,s,m)||g.forEach((p,y)=>{if(p.type==="buying-guide"){v.push(K0({article:b,block:p,articleIdentity:b.id||u(),blockIndex:y,authorProfile:Qu(b,r,o),imageUrl:R2(h,p)}));return}let{isoCurr:C,currencyStr:R}=fi(p,t);if(C!==n)return;let T=p.data||{},M=I0(b,p),{externalUrl:w}=M,D=J0(p,R),{rawPrice:k,rawMsrp:se}=D;if(!(a&&a.length>0&&!di(T,a))&&Sa(k,l)&&Ca(k,se,i)){if(w){if(A.has(w))return;A.add(w)}v.push(W0({article:b,block:p,articleIdentity:b.id||u(),blockIndex:y,authorProfile:Qu(b,r,o),currencyString:R,isoCurrency:C,presentation:M,pricing:D}))}})}),v}function mi(e,t){return Ur(e,{...t,selectedBrands:[],priceRange:"all",discountAmount:"0"})}function $0(e,t){return Ur(e,t)}function Gr(e){return(Array.isArray(e)?e:[e]).filter(n=>typeof n=="string").map(n=>n.trim())}function ec(e){return e?.trim().toLowerCase()==="freeform"}function Af(e){return!!e&&!/[^\p{L}\p{N}\s]/u.test(e)}function wf(e){let t=Gr(e.articletag),n=Gr(e.articletaghandle),a=Gr(e.articletagtype),l=new Map;t.forEach((o,u)=>{let c=n[u];!ec(a[u])||!c||!Af(o)||l.set(c.toLowerCase(),{handle:c,label:o,requestValue:o})});let i=Gr(e.articletagtypetag),r=Gr(e.articletagtypetaghandle);return i.forEach((o,u)=>{let[c,...s]=o.split("|"),[f,...d]=(r[u]||"").split("|"),m=s.join("|").trim(),v=d.join("|").trim();!ec(c)||!ec(f)||!v||!Af(m)||l.has(v.toLowerCase())||l.set(v.toLowerCase(),{handle:v,label:m,requestValue:m})}),r.forEach(o=>{let[u,...c]=o.split("|"),s=c.join("|").trim();!ec(u)||!s||!Af(s)||l.has(s.toLowerCase())||l.set(s.toLowerCase(),{handle:s,label:s})}),[...l.values()]}function ev(e,t){if(t)return e.find(n=>n.handle.toLowerCase()===t.toLowerCase())?.requestValue}function hi(e,t){let n=(Array.isArray(t)?t:[t]).filter(a=>typeof a=="string").map(a=>a.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(a=>wf(a).some(l=>n.includes(l.handle.toLowerCase())))}function T2(e){let t=new Map;return Array.isArray(e.articlecategory)?(e.articlecategory.forEach(n=>{if(typeof n!="string")return;let a=n.trim();a===a.toLowerCase()&&(a=a.replace(/\b\w/g,l=>l.toUpperCase())),a&&!t.has(a.toLowerCase())&&t.set(a.toLowerCase(),{handle:a,label:a})}),[...t.values()]):[]}function tv(e,t,n){let a={},l={},i={};e.forEach(u=>{let c=[];if(t.includeReviewProducts&&Zt(u)==="review"&&c.push(u.id||u.documenturl||u.documenthandle||""),u.articlepage)try{let s=ci(u),f=si(s,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});if((t.includeDeals===!1||t.includeCollections===!1)&&!f.some(d=>d.type==="buying-guide")&&!el(u,t.includeDeals,t.includeCollections,t.website))return;f.forEach(d=>{if(d.type==="buying-guide"){c.push(d.id||JSON.stringify(d.data||{}));return}if(fi(d,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:m,rawMsrp:v}=Ku(d);if(!Sa(m,t.priceRange)||!Ca(m,v,t.discountAmount))return;let A=d.data||{};if(t.selectedBrands&&t.selectedBrands.length>0&&!di(A,t.selectedBrands))return;let h=d.type==="featured-product"?A.primaryLink:A.link,g=A.url||A.link&&A.link.url||h&&h.url;c.push(g||JSON.stringify(A))})}catch{}c.length!==0&&n(u).forEach(s=>{let f=s.handle.toLowerCase(),d=Object.keys(a).find(m=>m.toLowerCase()===f);d||(d=s.handle,a[d]=new Set,l[d]=s.label,i[d]=s.requestValue),c.forEach(m=>a[d].add(m))})});let r={};return Object.keys(a).forEach(u=>{r[u]=a[u].size}),{tags:Object.keys(r).map(u=>({handle:u,label:l[u]||u,requestValue:i[u]})).sort((u,c)=>r[c.handle]-r[u.handle]),tagCounts:r}}function tc(e,t){let{tags:n,tagCounts:a}=tv(e,t,T2);return{tags:n.map(l=>l.label),tagCounts:a}}function nc(e,t){let{tags:n,tagCounts:a}=tv(e,t,wf);return{tags:n,tagCounts:a}}function E2(e,t){return e.documentUrl||e.sourceArticleUrl||e.articleId||`deal-${t}`}function yn(e,t,n){if(t!=="mix"||n!=="date_desc")return e;let a=new Map;e.forEach((o,u)=>{let c=E2(o,u),s=a.get(c)||[];s.push(o),a.set(c,s)});let l=[],i=0,r=!0;for(;r;)r=!1,a.forEach(o=>{let u=o[i];u&&(l.push(u),r=!0)}),i+=1;return l}var nv="compact-v1",D2={brand:"",currency:"",hasCommerceOffer:!1,isoCurrency:"",isCheckPrice:!0,isFeatured:!1,isPrime:!1,merchant:"",merchantId:"",msrp:"",price:"",rawMsrp:0,rawPrice:0,savingLabel:"",savingType:"none"},x2={hasCommerceOffer:!0,hawkPricePending:!1,rawMsrp:0,rawPrice:0};function av(e){return e.map(t=>{if(!t.isReviewProduct)return t;let n=String(t.sourceArticleUrl||t.documentUrl||t.url||""),a=t.fallbackImage??t.image??"",l={...D2,...t,fallbackImage:a,image:t.image??a,sourceArticleUrl:n,documentUrl:t.documentUrl??n,url:t.url??n,title:t.title??t.productName??"",text:t.text??t.description??"",hawkPricePending:t.hawkPricePending??!!t.hawkModelName,pros:t.pros??[],cons:t.cons??[]};return t.hawkRegionalCommerce&&(l.hawkRegionalCommerce=Object.fromEntries(Object.entries(t.hawkRegionalCommerce).map(([i,r])=>{let o=r,u=o.productName??l.productName,c=o.rawPrice??0,s=o.rawMsrp??0;return[i,{...x2,...o,fallbackImage:o.fallbackImage??a,image:o.image??a,productName:u,title:o.title??u??l.title,price:o.price??(c?String(c):""),msrp:o.msrp??(s?String(s):"")}]}))),l})}function ac(e,t,n=100){let a=new Set(e.slice(0,t).map((i,r)=>i.id||`visible-${r}`)),l=e.slice(0,t).filter(i=>i.isReviewProduct).length;return e.filter((i,r)=>{let o=i.id||`visible-${r}`;return a.has(o)?!0:i.isReviewProduct?(l+=1,l<=n):!1})}function lv(e,t){let n=new Map(t.map((a,l)=>[a.id||`enriched-${l}`,a]));return e.map((a,l)=>n.get(a.id||`enriched-${l}`)||a)}var M2=new Set(["deal","featured-product","gallery","buying-guide","text","section"]);function lc(e){return!!e&&typeof e=="object"}function iv(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function rv(e){try{let t=iv(e);if(!Array.isArray(t)||!t[0])return;let n=t[0],a=typeof n=="string"?iv(n):Array.isArray(n)?n:lc(n)&&"type"in n?t:n;if(!Array.isArray(a))return;let l=a.filter(i=>lc(i)&&M2.has(i.type)).map(i=>i.type==="text"&&i.data?{type:"text",data:{paragraphs:Array.isArray(i.data.paragraphs)?i.data.paragraphs.slice(0,3):void 0,text:typeof i.data.text=="string"?i.data.text.slice(0,500):void 0}}:i.type==="section"&&i.data?{type:"section",data:{text:i.data.text,heading:i.data.heading,title:i.data.title}}:i);return l.length>0?[JSON.stringify(l)]:void 0}catch{return}}function ov(e){if(!Array.isArray(e))return[];let t=!1;return e.map(n=>{if(!lc(n))return n;let a=n.articlepage?rv(n.articlepage):void 0,l=!!(n.articleauthormedia||n.articleauthorrole),i=!!(!t&&(n.articleauthorbio||n.articleauthorlongbio||n.articleauthorsocialnetworks));return i&&(t=!0),{id:n.id,articlename:n.articlename,documentname:n.documentname,documentnametext:n.documentnametext,documenthandle:n.documenthandle,articlecategory:n.articlecategory,articletag:n.articletag,articletaghandle:n.articletaghandle,articletagtype:n.articletagtype,articletagtypetag:n.articletagtypetag,articletagtypetaghandle:n.articletagtypetaghandle,articlecontroltag:n.articlecontroltag,articletype:n.articletype,articleauthor:n.articleauthor,articleauthorhandle:n.articleauthorhandle,articleauthortext:n.articleauthortext,...l?{articleauthorrole:n.articleauthorrole,articleauthormedia:n.articleauthormedia}:{},articlestrapline:n.articlestrapline,articlesocialtitle:n.articlesocialtitle,documenturl:n.documenturl,articlemedia:n.articlemedia,articlehawkmodels:n.articlehawkmodels,productrating:n.productrating,productpros:n.productpros,productcons:n.productcons,productverdict:n.productverdict,contentmodifieddate:n.contentmodifieddate,modifieddate:n.modifieddate,createddate:n.createddate,datepublished:n.datepublished,publisheddate:n.publisheddate,...i?{articleauthorbio:n.articleauthorbio,articleauthorlongbio:n.articleauthorlongbio,articleauthorsocialnetworks:n.articleauthorsocialnetworks}:{},...a?{articlepage:a}:{}}})}function uv(e){return Array.isArray(e)?e.map(t=>{if(!lc(t))return t;let n=t.articlepage?rv(t.articlepage):void 0;return{id:t.id,articleid:t.articleid,articlename:t.articlename,documentname:t.documentname,documentnametext:t.documentnametext,documenthandle:t.documenthandle,articleauthor:t.articleauthor,articleauthorhandle:t.articleauthorhandle,articleauthortext:t.articleauthortext,articleauthorrole:t.articleauthorrole,articleauthormedia:t.articleauthormedia,articleauthorbio:t.articleauthorbio,articleauthorlongbio:t.articleauthorlongbio,articleauthorsocialnetworks:t.articleauthorsocialnetworks,articlecategory:t.articlecategory,articletag:t.articletag,articletaghandle:t.articletaghandle,articletagtype:t.articletagtype,articletagtypetag:t.articletagtypetag,articletagtypetaghandle:t.articletagtypetaghandle,articletype:t.articletype,articlestrapline:t.articlestrapline,articlesocialtitle:t.articlesocialtitle,documenturl:t.documenturl,articlemedia:t.articlemedia,articlehawkmodels:t.articlehawkmodels,productrating:t.productrating,productpros:t.productpros,productcons:t.productcons,productverdict:t.productverdict,url:t.url,contentmodifieddate:t.contentmodifieddate,modifieddate:t.modifieddate,createddate:t.createddate,datepublished:t.datepublished,publisheddate:t.publisheddate,content:t.content,dek:t.dek,image_thumbnail:t.image_thumbnail,intro:t.intro,paragraphs:t.paragraphs,strapline:t.strapline,subtitle:t.subtitle,title:t.title,...n?{articlepage:n}:{}}}):[]}function pi(e){if(!e?.modifiedDate)return 0;let t=Array.isArray(e.modifiedDate)?e.modifiedDate[0]:e.modifiedDate,n=new Date(t).getTime();return Number.isNaN(n)?0:n}function nl(e){return e?.hasCommerceOffer===!0?!0:e?.hasCommerceOffer===!1?!1:!!(!e?.isBuyingGuideProduct&&!e?.isReviewProduct&&e?.url)}function ln(e,t,n=!0){let a=!0;t==="date_desc"?e.sort((l,i)=>pi(i)-pi(l)):t==="price_asc"?e.sort((l,i)=>l.rawPrice-i.rawPrice):t==="price_desc"?e.sort((l,i)=>i.rawPrice-l.rawPrice):t==="discount_desc"?e.sort((l,i)=>{let r=l.rawMsrp>l.rawPrice?l.rawMsrp-l.rawPrice:0;return(i.rawMsrp>i.rawPrice?i.rawMsrp-i.rawPrice:0)-r}):t==="rating_desc"?e.sort((l,i)=>{let r=Number(l.starRating)||0;return(Number(i.starRating)||0)-r||pi(i)-pi(l)}):t==="scored_first"?e.sort((l,i)=>{let r=Number(l.starRating)>0?1:0;return(Number(i.starRating)>0?1:0)-r||pi(i)-pi(l)}):a=!1,a&&n&&e.sort((l,i)=>Number(nl(i))-Number(nl(l)))}function cv(e,t,n){let a=e;if(!a&&t){let l=n.find(i=>i.toLowerCase()===t?.toLowerCase());l&&(a=l)}return a}function Pr(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(a=>a.articlecategory&&Array.isArray(a.articlecategory)&&a.articlecategory.some(l=>{if(!l||typeof l!="string")return!1;let i=l.toLowerCase(),r=i.split(":::");return i===n||r[0]===n||i.includes(n)}))}function sv(e){let t=wt(e.region);return{activeRegionCode:t,targetIso:an(t)}}function al(e,t,{discountAmount:n,priceRange:a}={}){let l=!!(a&&a!=="all"),i=!!(n&&n!=="0"&&n!=="all");return!t?.length&&!l&&!i?e:e.filter(r=>!r.isBuyingGuideProduct&&!r.isReviewProduct?!0:t?.length&&!di({brand:r.brand},t)||l&&(!Number(r.rawPrice)||!Sa(Number(r.rawPrice),a))?!1:Ca(Number(r.rawPrice)||0,Number(r.rawMsrp)||0,n))}function _2(e,t){let n=e.articleauthorhandle||[],a=e.articleauthor||[],l=e.articleauthortext||[],i=new Set([t.handle.toLowerCase(),t.fullName.toLowerCase(),t.name.toLowerCase()]);return[...n,...a,...l].some(r=>i.has(String(r||"").toLowerCase()))}function Sf(e,t,n){let a=Object.fromEntries(e.map(l=>[l.handle,0]));return t.forEach(l=>{let i=mi([l],n).length;i!==0&&e.forEach(r=>{_2(l,r)&&(a[r.handle]+=i)})}),a}function Cf(e,t){let n=Xu(e,t.authorHandle,t.authorName),a=t.selectedArticleId?n.filter(A=>A.id===t.selectedArticleId):n,{activeRegionCode:l,targetIso:i}=sv(t),{tags:r,tagCounts:o}=tc(a,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),u=cv(t.activeDealTag,t.query,r),c=Pr(a,u),{tags:s,tagCounts:f}=nc(c,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),d=t.activeFreeformTags?.length?t.activeFreeformTags:t.activeFreeformTag?[t.activeFreeformTag]:[],m=d.flatMap(A=>{let b=s.find(h=>h.handle.toLowerCase()===A.toLowerCase());return b?[b.handle]:[]}),v=t.preserveFreeformTagSelection?d:m;return{activeDealTag:u,activeFreeformTag:v[0]||null,activeFreeformTags:v,activeRegionCode:l,authorArticles:n,freeformTagCounts:f,freeformTags:s,tagCounts:o,tags:r,targetArticles:hi(c,v),targetIso:i}}function ic(e,t,n,a){let l=Iu(e,{activeRegionCode:n,targetIso:a,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),i=Ur(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});ln(i,t.sort,t.prioritiseCommercialProducts);let r=yn(al(i,t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange}),t.productSelection,t.sort).map(o=>(o.isBuyingGuideProduct||o.isReviewProduct)&&o.hawkModelName?{...o,hawkPricePending:!0}:o);return{brands:l,displayedDeals:r,extractedDeals:i}}function dv(e,t){let{activeRegionCode:n,targetIso:a}=sv(t),l=Lr(e,t.website||"tomsguide"),i=e.filter(o=>mi([o],{activeRegionCode:n,targetIso:a,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}).length>0),r=al(Ur(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange});return{authorCount:kr(l,i).length,deals:r}}function fv({allArticles:e,authorArticles:t,inventoryArticles:n,bakeReviewInventory:a,brands:l,couponMap:i,currentDealTag:r,currentFreeformTags:o,displayedDeals:u,options:c,resultCount:s,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}){let h=Lr(e,c.website||"tomsguide"),g=Sf(h,n,{activeRegionCode:wt(c.region),targetIso:an(wt(c.region)),selectedBrands:c.selectedBrands,priceRange:c.priceRange,discountAmount:c.discountAmount,includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}),p=kr(h,e.filter(C=>mi([C],{activeRegionCode:wt(c.region),targetIso:an(wt(c.region)),includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}).length>0)),y=Number(s)||12;return{activeDealTag:r,activeFreeformTag:o[0]||null,activeFreeformTags:o,allDeals:a?ac(u,y):u,authorArticles:ov(t),authors:Yu(p,g),brands:l,couponMap:i,deals:u.slice(0,y),reviewInventoryBaked:a,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}}function B2(e){return e&&e.widget&&e.widget.data&&Array.isArray(e.widget.data.offers)?e.widget.data.offers:e&&e.data&&Array.isArray(e.data.offers)?e.data.offers:Array.isArray(e)?e:e&&Array.isArray(e.offers)?e.offers:e&&e.offers&&Array.isArray(e.offers.offer)?e.offers.offer:e&&Array.isArray(e.data)?e.data:[]}function gv(e,t,n){let a={...n},l=new Set;return B2(e).forEach(r=>{let o="";r.merchant_name?o=r.merchant_name:r.merchant&&r.merchant[0]&&r.merchant[0].name?o=r.merchant[0].name:r.merchant&&r.merchant.name?o=r.merchant.name:r.retailer&&(o=r.retailer),o&&l.add(o.toLowerCase())}),t.forEach(r=>{a[r]=l.has(r.toLowerCase())?"has":"none"}),a}function mv(e){let t=[];return e?.widget?.data?.offers?t=e.widget.data.offers:e?.data?.offers?t=e.data.offers:Array.isArray(e)?t=e:e?.offers?.offer?t=Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers&&(t=Array.isArray(e.offers)?e.offers:[e.offers]),t}async function hv({couponMap:e,couponUrl:t,fetcher:n=fetch,merchants:a}){if(!t)return e;try{let l=await n(t.toString());return gv(await l.json(),a,e)}catch{let l={...e};return a.forEach(i=>{l[i]="none"}),l}}function pv({enrichingBuyingGuides:e,error:t,loading:n,loadingMore:a,refreshingFeed:l}){return t?"error":a?"loading_more":n?"loading_inventory":l?"refreshing_inventory":e?"enriching_visible_cards":"ready"}function yv(e,t){let n=Xu(tl(e),t.authorHandle,t.authorName),a=wt(t.region),l=an(a),{tags:i,tagCounts:r}=tc(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),o=Iu(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),{tags:u,tagCounts:c}=nc(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),s=$0(n,{activeRegionCode:a,targetIso:l,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});ln(s,t.sort,t.prioritiseCommercialProducts);let f=yn(s,t.productSelection,t.sort);return{authorArticles:n,brands:o,deals:f,tagCounts:r,tags:i,freeformTagCounts:c,freeformTags:u}}var N2="fc-author-commerce-widget",vn="airedale-feeds";var rc=null;function vv(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function Rf(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error),e.onabort=()=>n(e.error)})}function Tf(){return rc||(typeof window>"u"||typeof window.indexedDB>"u"?Promise.resolve(null):(rc=new Promise(e=>{let t=window.indexedDB.open(N2,14);t.onupgradeneeded=()=>{let n=t.result;n.objectStoreNames.contains(vn)||n.createObjectStore(vn,{keyPath:"key"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),rc))}function bv({authorHandle:e,authorName:t,includeBuyingGuideProducts:n,includeCollections:a,includeDeals:l,includeReviewProducts:i,articleCategory:r,articleTag:o,pageStarts:u,reviewPageStarts:c,loadAllReviewPages:s,website:f}){return["v14",f||"tomsguide",e||"",t||"",n?"buying-guides":"",a===!1?"no-collections":"collections",l===!1?"no-deals":"deals",i?"reviews":"",r||"",o||"",u?.join(",")||"",c?.join(",")||"",s===!1?"review-pages-partial":""].map(d=>encodeURIComponent(d)).join("|")}async function O2(e){let t=await Tf();if(!t)return;let n=t.transaction(vn,"readwrite"),a=Rf(n);n.objectStore(vn).delete(e),await a}async function Av(e,t=Date.now()){try{let n=await Tf();if(!n)return null;let a=n.transaction(vn,"readonly"),l=await vv(a.objectStore(vn).get(e));if(!l||l.schemaVersion!==14||!Array.isArray(l.articles)||l.articles.length===0)return null;let i=Math.max(0,t-l.cachedAt);return i>864e5?(O2(e),null):{articles:l.articles,cachedAt:l.cachedAt,isFresh:i<=6e5}}catch{return null}}async function k2(e){let t=e.transaction(vn,"readwrite"),n=Rf(t),a=t.objectStore(vn);(await vv(a.getAll())).sort((i,r)=>r.cachedAt-i.cachedAt).slice(10).forEach(i=>a.delete(i.key)),await n}async function wv(e,t,n=Date.now()){if(t.length!==0)try{let a=await Tf();if(!a)return;let l=a.transaction(vn,"readwrite"),i=Rf(l);l.objectStore(vn).put({articles:t,cachedAt:n,key:e,schemaVersion:14}),await i,await k2(a)}catch{}}var Ef=[];var Mf=[],Df=0;function Sv(){for(;Df<4&&Mf.length>0;){let e=Mf.shift();if(!e)return;Df+=1,e.run().then(e.resolve,e.reject).finally(()=>{Df-=1,Sv()})}}function L2(e){return new Promise((t,n)=>{Mf.push({reject:n,resolve:t,run:e}),Sv()})}function xf(e){Ef.push(e),Ef.length>100&&Ef.shift()}async function oc(e,t,n=4){let a=new Array(e.length),l=0,i=Math.min(Math.max(1,n),e.length);return await Promise.all(Array.from({length:i},async()=>{for(;l<e.length;){let r=l;l+=1,a[r]=await t(e[r],r)}})),a}async function yi(e,t){return L2(async()=>{let n=t.fetcher||fetch,a=Date.now(),l=new AbortController,i=!1,r=()=>l.abort();if(t.signal?.aborted)return xf({durationMs:0,outcome:"aborted",source:t.source,startedAt:a}),{data:null,response:null};t.signal?.addEventListener("abort",r,{once:!0});let o=setTimeout(()=>{i=!0,l.abort()},8e3);try{let u=await n(e,{signal:l.signal}),c=u.ok?await u.json():null;return xf({durationMs:Date.now()-a,outcome:u.ok?"succeeded":"failed",source:t.source,startedAt:a}),{data:c,response:u}}catch{return xf({durationMs:Date.now()-a,outcome:i?"timed_out":t.signal?.aborted?"aborted":"failed",source:t.source,startedAt:a}),{data:null,response:null}}finally{clearTimeout(o),t.signal?.removeEventListener("abort",r)}})}var Bf="https://airedale.futurecdn.net/feeds/feed_1786707986217.json",H2="https://airedale.futurecdn.net/feeds/feed_1786702796175.json",z2="https://airedale.futurecdn.net/feeds/feed_1787582137748.json",U2=2,_f=new Map,Cv=new Map;function Rv(e){let t=new URL(e),n=String(t.searchParams.get("articleType")||"").trim().toLowerCase(),a=String(t.searchParams.get("articleControlTag")||"").replace(/[\s-]+/g,"_").toLowerCase();return n!=="deals"&&a!=="type_deal"?null:(t.searchParams.delete("start"),t.toString())}function G2(e){return!e.response?.ok||e.articles.length<50?!1:!e.articles.some(t=>pf(t)&&!yf(t))}function P2(e){return!e.parameter||!e.value?"":`&${e.parameter}=${encodeURIComponent(e.value)}`}function q2(e,t="",n=!1,a,l,{includeCollections:i=!0,includeDeals:r=!0}={},o){let u=Wu(e,{includeBuyingGuideProducts:n,includeCollections:i,includeDeals:r}),c=a?`&articleCategory=${encodeURIComponent(a)}`:"",s=o?`&articleTag=${encodeURIComponent(o)}`:"";return u.scopes.flatMap(f=>(l||u.pageStarts).map(d=>`${Bf}?site=${e}&limit=${50}&start=${d}${P2(f)}${t}${c}${s}`))}function Tv(e,t="",n,a=0,l){let i=e==="pcgamer"?"&articleControlTag=channel_gaming_hardware":"",r=n?`&articleCategory=${encodeURIComponent(n)}`:"",o=l?`&articleTag=${encodeURIComponent(l)}`:"";return`${H2}?site=${encodeURIComponent(e)}&articleType=review&limit=${50}&start=${a}${i}${t}${r}${o}`}function F2(e,t){return t!=="pcgamer"?e:e.map(n=>{let a=Array.isArray(n.articlecontroltag)?n.articlecontroltag:[];return a.some(l=>String(l).replace(/[^a-z0-9]/gi,"").toLowerCase()==="channelgaminghardware")?n:{...n,articlecontroltag:[...a,"channel_gaming_hardware"]}})}function j2(e,t){return`${z2}?site=${encodeURIComponent(e)}&documentHandle=${encodeURIComponent(t)}&limit=1`}async function Y2(e,t){let n=`${e}|${t}`,a=Cv.get(n);if(a)return a;let l=yi(j2(e,t),{source:"review-model-resolver"}).then(({data:i})=>i?gf(i)[0]:null).then(i=>i?gi(i):"").catch(()=>"");return Cv.set(n,l),l}async function Nf(e,t,n,a="date_desc"){let l=o=>{let u=[o.datepublished,o.publisheddate,o.createddate,o.contentmodifieddate,o.modifieddate].find(s=>s!=null&&String(s).trim()),c=new Date(Array.isArray(u)?u[0]:u).getTime();return Number.isFinite(c)?c:0},i=o=>{let u=Array.isArray(o.productrating)?o.productrating[0]:o.productrating;return Number(u)||0},r=e.filter(o=>Zt(o)==="review"&&!gi(o)&&typeof o.documenthandle=="string"&&o.documenthandle.trim()).sort((o,u)=>{let c=i(o),s=i(u);return a==="rating_desc"?s-c||l(u)-l(o):a==="scored_first"&&+(s>0)-+(c>0)||l(u)-l(o)}).slice(0,n);return await Promise.all(r.map(async o=>{let u=await Y2(t,o.documenthandle);u&&(o.articlehawkmodels=[u])})),e}function xv(e,t){let n=()=>{wv(e,uv(t))};if(typeof window<"u"&&typeof window.requestIdleCallback=="function"){window.requestIdleCallback(n,{timeout:2e3});return}setTimeout(n,0)}function V2(e,t){return e&&e!=="all-authors"?`&articleAuthorHandle=${encodeURIComponent(e)}`:t&&t!=="All authors"&&t!=="all-authors"?`&articleAuthor=${encodeURIComponent(t)}`:""}function X2({articleCategory:e,articleTag:t,authorParameter:n}){return!!(n&&!e&&!t)}async function Mv({authorHandle:e,authorName:t,fallbackAuthorName:n,includeBuyingGuideProducts:a,includeCollections:l,includeDeals:i,includeReviewProducts:r,onProgress:o,articleCategory:u,articleTag:c,pageStarts:s,reviewPageStarts:f,loadAllReviewPages:d,signal:m,throwOnFailure:v,website:A}){let b=A||"tomsguide",h=V2(e,t),g=[],p=!1,y=!0,C=w=>j0(w,b,a,r,l,i),R=()=>q0(g).map(w=>{let D=gi(w);return D&&!String(w.articlehawkmodels||"").trim()?{...w,articlehawkmodels:[D]}:w}).filter(C),T=()=>{let w=R();w.length>0&&o?.(w)};try{let w=q2(b,h,a,u,s,{includeCollections:l,includeDeals:i},c),D=[];r&&(f||[0]).forEach(X=>{let de=Tv(b,h,u,X,c);D.push(de),w.push(de)});let k=async(X,de=D.includes(X)?"review-feed":"author-feed")=>{let $e=await yi(X,{signal:m,source:de});for(let jr=0;jr<U2&&!$e.response?.ok&&!m?.aborted;jr+=1)$e=await yi(X,{signal:m,source:de});let{data:Z,response:x}=$e,P=Z?gf(Z):[],Q=b==="pcgamer"&&de.startsWith("review-feed")?F2(P,b):P,Vn={articles:Q,data:Z,isPcGamerHardwareReviewFeed:b==="pcgamer"&&de.startsWith("review-feed"),response:x,reviewTotalCount:D.includes(X)&&Number(x?.headers.get("x-total-count"))||null};return Q.length>0&&g.push(...Q),Vn},se=w.filter(X=>Number(new URL(X).searchParams.get("start")||0)===0),I=w.filter(X=>!se.includes(X)),j=await oc(se,X=>k(X));T();let He=new Map(se.flatMap((X,de)=>{let $e=Rv(X);return $e?[[$e,j[de]]]:[]})),ze=new Map,St=[];I.forEach(X=>{let de=Rv(X);if(!de){St.push(X);return}ze.set(de,[...ze.get(de)||[],X])});let[Ie,rn]=await Promise.all([oc(St,X=>k(X)),Promise.all([...ze.entries()].map(async([X,de])=>{let $e=[],Z=He.get(X);for(let x of de){if(!Z||!G2(Z))break;let P=await k(x);$e.push(P),Z=P}return $e}))]),Be=[...Ie,...rn.flat()],Je=[...j,...Be];p=Je.length>0&&Je.every(X=>!X.response?.ok);let nt=Je.find(X=>X.reviewTotalCount!==null)?.reviewTotalCount;if(d!==!1&&f&&nt&&nt>f.length*50){let X=new Set(f),de=[];for(let Z=0;Z<nt;Z+=50)X.has(Z)||de.push(Z);let $e=await oc(de,async Z=>await k(Tv(b,h,u,Z,c),"review-feed-page"));Je.push(...$e)}y=Je.every(X=>X.response?.ok)}catch(w){y=!1}if(v&&p)throw new Error("The author feed could not be loaded");let M=R();if(M.length===0&&X2({authorParameter:h,articleCategory:u,articleTag:c}))try{let w=await yi(`${Bf}?site=${b}&limit=150${h}`,{signal:m,source:"author-feed-fallback"});if(!w.response?.ok&&n&&(w=await yi(`${Bf}?site=${b}&limit=150&articleAuthor=${encodeURIComponent(n)}`,{signal:m,source:"author-feed-fallback"})),w.data){let D=w.data,k=Array.isArray(D)?D:D.data||[];k.length>0&&(M=k.slice(0,150))}}catch(w){}return{articles:M.filter(C),complete:!m?.aborted&&y}}function Ev(e,t){let n=_f.get(e);if(n)return n;let a=Mv(t).then(l=>(l.complete&&l.articles.length>0&&xv(e,l.articles),l)).finally(()=>{_f.delete(e)});return _f.set(e,a),a}async function Dv(e,t){let n=await Mv(t);return n.complete&&n.articles.length>0&&xv(e,n.articles),n}async function _v({onBackgroundRefresh:e,onProgress:t,...n}){let a=bv(n),l=await Av(a);return l?(t?.(l.articles),l.isFresh||(n.signal?Dv(a,n):Ev(a,n)).then(({articles:o,complete:u})=>{u&&o.length>0&&e?.(o)}),l.articles):(await(n.signal?Dv(a,{...n,onProgress:t}):Ev(a,{...n,onProgress:t}))).articles}function Of(e,t){let n=e.shipping?.prime===!0,a=e.merchant?.name||e.merchant_name||e.retailer||"Retailer";typeof e.merchant=="string"&&(a=e.merchant);let l=null,i=0,r=String(e.model_id||e.id||"");if(r&&t)if(t[r]&&t[r].score!=null)l=parseFloat(t[r].score);else{let o=Object.values(t).find(u=>String(u.model_id)===r||String(u.id)===r);o&&o.score!=null&&(l=parseFloat(o.score))}return l!=null&&(i=Math.round((l>10?l/20:l/2)*2)/2),{isPrime:n,merchant:a,starRating:i>0?i:null}}function kf(e){let t=String(e.price||e.current_price||"0"),n=String(e.was_price||e.msrp||e.original_price||"0"),a=parseFloat(t.replace(/[^0-9.]/g,""))||0,l=parseFloat(n.replace(/[^0-9.]/g,""))||0,i=a===0||t==="0.00"||t==="0",r=e.currency&&typeof e.currency=="string"?e.currency:e.currency_symbol&&typeof e.currency_symbol=="string"?e.currency_symbol:"$",o=ee(e.percentage_saving_label||"");!o&&l>a&&a>0&&(o=Math.round((l-a)/l*100)+"% OFF");let u=r;return u.includes("&")&&(u.includes("36")?u="$":u.includes("163")||u.includes("pound")?u="\xA3":(u.includes("8364")||u.includes("euro"))&&(u="\u20AC")),{rawPrice:a,rawMsrp:l,currency:u,isCheckPrice:i,savingLabel:o}}function Bv({query:e,region:t,retailer:n,selectedBrands:a,offerType:l,priceRange:i,discountAmount:r,resultCount:o}){let u=new URL("https://search-api.fie.future.net.uk/widget.php");if(u.searchParams.append("model_name",e),t&&t!=="auto"&&u.searchParams.append("area",t),n&&u.searchParams.append("filter_merchant_name",n),a&&a.length>0&&u.searchParams.append("filter_label[text_brand]",a.join(",")),l&&u.searchParams.append("offer",l),i&&i!=="all"){if(i==="under50")u.searchParams.append("filter_max_price","50");else if(i==="over50")u.searchParams.append("filter_min_price","50");else if(i==="over30")u.searchParams.append("filter_min_price","30");else if(i==="over500")u.searchParams.append("filter_min_price","500");else if(i.includes("_")){let[c,s]=i.split("_");c&&u.searchParams.append("filter_min_price",c),s&&u.searchParams.append("filter_max_price",s)}}if(r&&r!=="0"){let c=(100-parseInt(r))/100;u.searchParams.append("min_discount_ratio",c.toString())}return u.searchParams.append("filter_product_types","deals"),u.searchParams.append("rows",String(o||"12")),u}function Nv(e){return e?.widget?.data?.offers?e.widget.data.offers:e?.data?.offers?e.data.offers:Array.isArray(e)?e:e?.offers?.offer?Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers?Array.isArray(e.offers)?e.offers:[e.offers]:[]}function Ov(e){let t=[];return e.forEach(n=>{let a=[];Array.isArray(n.offers)?a=n.offers:Array.isArray(n.offer)?a=n.offer:n.offers&&typeof n.offers=="object"?a=[n.offers]:n.offer&&typeof n.offer=="object"&&(a=[n.offer]),a.length>0?a.forEach(l=>{t.push({...n,...l})}):t.push(n)}),t}function kv(e){return e?.widget?.data?.model_info?e.widget.data.model_info:e?.data?.model_info?e.data.model_info:{}}var Lf=new Map,Q2=3e3,K2=["GB","US"],Lv=6,Z2=["brand","currency","fallbackImage","hasCommerceOffer","hawkPricePending","hawkListings","image","isCheckPrice","merchant","merchantId","modelId","msrp","price","productKey","productName","rawMsrp","rawPrice","savingLabel","title","url"];function Hf(e){return String(e||"").trim().toLowerCase()}function Gv(e){return e==="UK"?"GB":e}function Pv(e,t){let n=String(t||"").trim().toUpperCase(),l={AU:["A$","AUD"],CA:["CA$","CAD"],DE:["\u20AC","EUR"],ES:["\u20AC","EUR"],FR:["\u20AC","EUR"],GB:["\xA3","GBP","GB\xA3"],IT:["\u20AC","EUR"],NL:["\u20AC","EUR"],US:["$","USD","US$"]}[e];return!l||l.includes(n)}function Hv(e,t){return String(e.id||`hawk-deal-${t}`)}function W2(e){return e.map(t=>({...t,hasCommerceOffer:!1,hawkPricePending:!!t.hawkModelName,hawkListings:[],image:t.fallbackImage||t.image||"",isCheckPrice:!0,merchant:"",merchantId:"",msrp:"",price:"",productKey:"",rawMsrp:0,rawPrice:0,savingLabel:"",url:t.sourceArticleUrl||t.documentUrl||t.url}))}function I2(e){return Z2.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}function qv(e){return!!((e.isBuyingGuideProduct||e.isReviewProduct)&&e.hawkModelName)}function J2(e){return e.model_image_url||e.model_image||e.product_image||e.image_url||e.image||""}function Fv(e){return e.link||e.url||e.offer_link||""}function $2(e,t){let n=String(t.model_id||t.id||"");return n&&e[n]?e[n]:Object.values(e).find(a=>String(a?.model_id||a?.id||"")===n)||{}}function eS(e,t,n){let a=e.map(i=>{let r=kf(i),o=Of(i,t),u=Fv(i),c=ee(String(o.merchant||"")).trim();return!u||!c||r.rawPrice<=0||!Pv(n,r.currency)?null:{merchant:c,merchantId:typeof i.merchant=="object"?String(i.merchant?.id||""):"",modelId:String(i.model_id||""),offer:i,productKey:String(i.product_key||""),rawPrice:r.rawPrice,url:u}}).filter(i=>i!==null).sort((i,r)=>i.rawPrice-r.rawPrice||i.merchant.localeCompare(r.merchant)),l=new Set;return a.filter(i=>{let r=i.merchant.toLocaleLowerCase();return l.has(r)?!1:(l.add(r),!0)}).slice(0,4)}async function zv(e,t,n){let a=`${t}|${Hf(e)}`;return Lf.has(a)||Lf.set(a,(async()=>{let l;try{let i=new AbortController;l=setTimeout(()=>i.abort(),Q2);let r=await n(Bv({query:e,region:t,resultCount:12}).toString(),{signal:i.signal});if(!r.ok)return null;let o=await r.json(),u=Ov(Nv(o)),c=Hf(e),s=u.filter(A=>Hf(A.model_name||A.model)===c),f=s.length?s:u,d=f[0]||null;if(!d)return null;let m=kv(o),v=$2(m,d);return{brand:String(v?.brand||d.brand||"").trim(),modelInfo:m,offer:d,offers:f}}catch{return null}finally{l&&clearTimeout(l)}})()),Lf.get(a)}function Uv(e,t,n){return e.map(a=>{let l=String(a.hawkModelName);if(!qv(a)||!t.has(l))return a;let i=t.get(l);if(!i)return{...a,hawkPricePending:!1};let{offer:r}=i.lookup,o=kf(r),u=Of(r,i.lookup.modelInfo),c=J2(r),s=Fv(r),f=ee(String(r.model_name||r.model||a.hawkModelName||a.productName||a.title||"").trim()),d=!!(i.region===n&&s&&Pv(n,o.currency)),m=i.region===n?eS(i.lookup.offers,i.lookup.modelInfo,n).map(({offer:v,...A})=>A):[];return d?{...a,brand:i.lookup.brand||r.brand||a.brand,currency:o.currency||a.currency,fallbackImage:c?a.image:a.fallbackImage,hasCommerceOffer:!0,hawkPricePending:!1,hawkListings:m,image:c||a.image,isCheckPrice:o.isCheckPrice,merchant:u.merchant||a.merchant,merchantId:typeof r.merchant=="object"&&r.merchant?.id||"",modelId:r.model_id||"",msrp:o.rawMsrp>0?String(o.rawMsrp):"",price:o.rawPrice>0?String(o.rawPrice):"",productKey:r.product_key||"",productName:f||a.productName,rawMsrp:o.rawMsrp,rawPrice:o.rawPrice,savingLabel:o.savingLabel,title:f||a.title,url:s||a.url}:{...a,brand:i.lookup.brand||a.brand,fallbackImage:c?a.image:a.fallbackImage,hawkPricePending:!1,image:c||a.image,productName:f||a.productName,title:f||a.title}})}async function vi(e,t,n=fetch,a,l=[],i){let r=Gv(t),o=new Map,u=e.filter(qv).map(f=>String(f.hawkModelName)),c=new Set(u),s=Array.from(new Set([...l.filter(f=>c.has(f)),...u])).slice(0,a);for(let f=0;f<s.length;f+=Lv)await Promise.all(s.slice(f,f+Lv).map(async d=>{let m=await zv(d,r,n),v=m||r==="GB"?null:await zv(d,"GB",n);o.set(d,m?{lookup:m,region:r}:v?{lookup:v,region:"GB"}:null),i?.(Uv(e,o,r))}));return Uv(e,o,r)}async function jv(e,t=fetch){let n=W2(e),a=await Promise.all(K2.map(async i=>[i,await vi(n,i,t)])),l=new Map;return a.forEach(([i,r])=>{r.forEach((o,u)=>{if(!o.hasCommerceOffer)return;let c=Hv(o,u),s=l.get(c)||{};s[i]=I2(o),l.set(c,s)})}),e.map((i,r)=>{let o=l.get(Hv(i,r));return o?{...i,hawkRegionalCommerce:o}:i})}function zf(e,t){let n=Gv(t);return e.map(a=>{let l=a.hawkRegionalCommerce?.[n];return l?{...a,...l,hawkPricePending:!1}:a})}function Yv(e,t){let n=Array.from(new Set(e.map(i=>i.merchant).filter(Boolean))),a={};if(n.forEach(i=>{a[i]="loading"}),n.length===0)return{merchants:n,couponMap:a,couponUrl:null};let l=new URL("https://search-api.fie.future.net.uk/widget.php");return l.searchParams.append("model_name","Everything"),l.searchParams.append("filter_merchant_name",n.join(",")),l.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),l.searchParams.append("sort","voucher"),l.searchParams.append("rows","120"),l.searchParams.append("origin","widgets-clientside"),l.searchParams.append("combine_product_types","1"),l.searchParams.append("language","en-GB"),l.searchParams.append("all_filters","false"),l.searchParams.append("exclude_unlabelled","false"),l.searchParams.append("include_specs","false"),t&&t!=="auto"&&l.searchParams.append("area",t),{merchants:n,couponMap:a,couponUrl:l}}function Vv(e,t){let n=new URL("https://search-api.fie.future.net.uk/widget.php");return n.searchParams.append("model_name","Everything"),n.searchParams.append("language","en-GB"),t&&t!=="auto"&&n.searchParams.append("area",t),n.searchParams.append("combine_product_types","1"),n.searchParams.append("filter_merchant_name",e),n.searchParams.append("all_filters","false"),n.searchParams.append("exclude_unlabelled","false"),n.searchParams.append("include_specs","false"),n.searchParams.append("sort","voucher"),n.searchParams.append("distinct_merchants","natural"),n.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),n.searchParams.append("rows","50"),n.searchParams.append("origin","widgets-clientside"),n}function Uf(e,t,n=!0){if(!e?.length)return e||[];if(t==="date_desc"&&!n)return e;let a=[...e];return ln(a,t,n),a}function uc(e,t,n,a=!0){if(n!=="date_desc"||!e?.length)return t;let l=(c,s)=>String(c.id||s),i=new Map(t.map((c,s)=>[l(c,s),c])),r=new Set,o=e.flatMap((c,s)=>{let f=l(c,s);r.add(f);let d=i.get(f);return d?[d]:[]}),u=t.filter((c,s)=>!r.has(l(c,s)));return a?[...o.filter(nl),...u.filter(nl),...o.filter(c=>!nl(c)),...u.filter(c=>!nl(c))]:[...o,...u]}function Xv({activeDealTag:e,activeFreeformTag:t,clickedAuthorOverride:n,compactEmbed:a,compactInventoryExplored:l,compactLoadRequested:i,initialActiveDealTag:r,initialActiveFreeformTag:o,reviewInventoryBaked:u}){return!!(a&&u&&!n&&!i&&!l&&(!e||e===r)&&(!t||t===o))}var Qv=[0,50,100,150,200,250,300,350,400,450],Gf=4;function Kv(e){return(Array.isArray(e)?e:[e]).reduce((n,a)=>{if(typeof a!="string"||!a.trim())return n;let l=a.trim();return n.some(i=>i.toLowerCase()===l.toLowerCase())?n:[...n,l]},[])}function nS(e,t){return e.length===t.length&&e.every((n,a)=>n===t[a])}function Pf(e){return e.map(t=>t.trim().toLowerCase()).sort().join("|")}function qf(e){let t=e.initialData,n=Fu(e),a=!!(e.preloadReviewInventory&&!n),l=!!(e.preloadReviewInventory&&e.includeReviewProducts&&!e.compactEmbed),i=n?Number(e.resultCount)||12:100,r=n?!1:e.prioritiseCommercialProducts,o=wt(e.region),u=zf(t?.allDeals||t?.deals||[],o).filter(_=>P0(_,o)),c=wa(n?"date_desc":e.sort,!Or(e)),s=!!(e.priceRange&&e.priceRange!=="all")||!!(e.discountAmount&&e.discountAmount!=="0"&&e.discountAmount!=="all"),f=tl(t?.authorArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),d=tl(t?.authorInteractionArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),[m,v]=(0,N.useState)(()=>Uf(u,c,r)),[A,b]=(0,N.useState)(t?.totalDealCount??t?.allDeals?.length??t?.deals?.length??0),[h,g]=(0,N.useState)(t?.totalAuthorCount??t?.authors?.length??0),[p,y]=(0,N.useState)(!t),[C,R]=(0,N.useState)(!1),[T,M]=(0,N.useState)(!1),[w,D]=(0,N.useState)(!1),[k,se]=(0,N.useState)(t?.couponMap||{}),[I,j]=(0,N.useState)(f),[He,ze]=(0,N.useState)(f),[St,Ie]=(0,N.useState)(t?.tags||[]),[rn,Be]=(0,N.useState)(t?.tagCounts||{}),[Je,nt]=(0,N.useState)(t?.freeformTags||[]),[X,de]=(0,N.useState)(t?.freeformTagCounts||{}),[$e,Z]=(0,N.useState)(t?.brands||[]),[x,P]=(0,N.useState)(()=>{let _=t?.activeDealTag||e.query;return _&&_.toLowerCase()!=="everything"?_:null}),[Q,Vn]=(0,N.useState)(()=>Kv(t?.activeFreeformTags||t?.activeFreeformTag)),[jr,bi]=(0,N.useState)(f),[sc,ll]=(0,N.useState)(null),[at,Yr]=(0,N.useState)(!1),[il,Vr]=(0,N.useState)(""),[rl,Xr]=(0,N.useState)(""),[f1,g1]=(0,N.useState)(0),[Wt,dc]=(0,N.useState)(e.resultCount?parseInt(e.resultCount):12),[Xf,fc]=(0,N.useState)(!1),[m1,Qr]=(0,N.useState)(null),[gc,h1]=(0,N.useState)(!1),[mc,p1]=(0,N.useState)([0]),Kr=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`:""),hc=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}|age-${e.editorialMaxAgeMonths||"none"}`:""),y1=(0,N.useRef)(e.website||"tomsguide"),pc=(0,N.useRef)(e.website||"tomsguide"),Qf=(0,N.useRef)(u.length>0),Kf=(0,N.useRef)(null),ol=(0,N.useRef)(new Map),v1=(0,N.useRef)({activeDealTag:String(x||"").trim().toLowerCase(),freeformTags:Pf(Kv(t?.activeFreeformTags||t?.activeFreeformTag)),discountAmount:e.discountAmount,priceRange:e.priceRange}),Xn=(0,N.useRef)(!1),De=(0,N.useRef)(!1),Ai=(0,N.useRef)(!1),Zf=(_,oe,ne=at?il:e.authorHandle,we=at?rl:e.authorName)=>[e.website||"tomsguide",ne||"",we||"",wt(e.region),String(_||"").trim().toLowerCase(),Pf(oe),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),Wf=(_,oe)=>{let ne=v1.current;return!!(e.compactEmbed&&t?.brands?.length&&String(_||"").trim().toLowerCase()===ne.activeDealTag&&Pf(oe)===ne.freeformTags&&e.priceRange===ne.priceRange&&e.discountAmount===ne.discountAmount)},Zr=(_,oe)=>{let ne=ol.current.get(Zf(_,oe));if(ne){Z(ne);return}if(Wf(_,oe)){Z(t?.brands||[]);return}},ul=()=>Xn.current||n?void 0:e.productSelection;(0,N.useEffect)(()=>{ll(null)},[e.authorName,e.authorHandle]),(0,N.useLayoutEffect)(()=>{let _=e.website||"tomsguide";pc.current!==_&&(pc.current=_,v(()=>[]),j(()=>[]),ze(()=>[]),bi(()=>[]),Ie(()=>[]),Be({}),nt(()=>[]),de({}),Z(()=>[]),ol.current.clear(),se({}),Yr(!1),Vr(""),Xr(""),ll(null),P(null),Vn([]),g(0),b(0),M(!1),fc(!1),Qr(null),Ai.current=!1,R(!0),y(!0))},[e.website]),(0,N.useEffect)(()=>{e.compactEmbed||typeof document>"u"||setTimeout(()=>{document.dispatchEvent(new CustomEvent("processArticle"))},100)},[m,Wt,e.query,x,Q]),(0,N.useEffect)(()=>{e.resultCount&&(dc(parseInt(e.resultCount,10)||12),Qr(null))},[e.resultCount]),(0,N.useEffect)(()=>{Qr(null)},[x,Q,e.authorHandle,e.authorName,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands,e.sort]),(0,N.useEffect)(()=>{if(!t||!e.includeBuyingGuideProducts&&!e.includeReviewProducts||e.compactEmbed&&(De.current||e.refreshDealsOnViewport))return;let _=wt(e.region),oe=zf(t.allDeals||t.deals||[],_);if(_==="unavailable"){let It=oe.map(on=>(on.isBuyingGuideProduct||on.isReviewProduct)&&on.hawkModelName?{...on,hawkPricePending:!1}:on);ln(It,c,r),v(yn(It,ul(),c));return}let ne=al(oe,e.selectedBrands),we=Number(e.resultCount)||12,Ta=typeof navigator>"u"?void 0:navigator.connection,Ea=!Ta?.saveData&&!Ta?.effectiveType?.includes("2g")&&(!e.compactEmbed||!!e.warmInventory),Si=s?ne:t.reviewInventoryBaked?ne.slice(0,Wt+(Ea?we:0)):oe;if(!Si.some(It=>(It.isBuyingGuideProduct||It.isReviewProduct)&&It.hawkModelName))return;let sl=!0;return M(!0),vi(Si,_).then(It=>{if(!sl)return;let on=t.reviewInventoryBaked?lv(oe,It):It,Ir=al(on,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(lt=>(lt.isBuyingGuideProduct||lt.isReviewProduct)&&lt.hawkModelName?{...lt,hawkPricePending:!1}:lt);ln(Ir,c,r),v(yn(Ir,ul(),c)),Z(lt=>t?.brands?.length?lt:hf(lt,It))}).finally(()=>{sl&&M(!1)}),()=>{sl=!1}},[t,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,e.selectedBrands,e.discountAmount,e.priceRange,c,e.productSelection,Wt,e.resultCount,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,x,Q]),(0,N.useEffect)(()=>{let _=!0,oe=new AbortController,ne=Ai.current,we=!e.refreshDealsOnViewport&&Xv({activeDealTag:x,activeFreeformTag:Q[0]||null,clickedAuthorOverride:at,compactEmbed:e.compactEmbed,compactInventoryExplored:De.current,compactLoadRequested:gc,initialActiveDealTag:t?.activeDealTag,initialActiveFreeformTag:t?.activeFreeformTag,reviewInventoryBaked:t?.reviewInventoryBaked}),Ta=u.length>0,Ea=!!(n&&e.compactEmbed&&!De.current),Si=!!(Ea&&e.warmInventory&&I.length===0&&m.length>0),sl=!!(we||e.compactEmbed&&Ta&&I.length===0&&!at&&!gc&&!De.current&&!e.refreshDealsOnViewport&&(!n||!e.warmInventory));return!sl&&!ne&&!Si&&(R(!0),e.compactEmbed&&De.current&&v([])),(async()=>{D(!1),M(!1);let on=m.length>0||St.length>0||Je.length>0||$e.length>0,Ir=sl;try{if(!e.authorName&&!e.authorHandle){v([]),j([]),bi([]),Ie([]),nt([]),Z([]),ll(null),P(null),Vn([]),y(!0);return}let lt=at?il:e.authorHandle,Jr=at?rl:e.authorName,$r=`${e.website||"tomsguide"}|${lt||""}|${Jr||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`,yc=`${$r}|${e.compactEmbed&&x||""}|${e.compactEmbed?Q.join(","):""}|${e.compactEmbed&&De.current?"expanded":e.refreshDealsOnViewport?"viewport-refresh":"initial"}|lightweight-pages-${Ea?mc.join(","):"all"}|age-${e.editorialMaxAgeMonths||"none"}`,Jt=I,$f=St,U1=ev(Je,Q.length===1?Q[0]:null),eg=()=>({activeDealTag:x,activeFreeformTag:Q[0]||null,activeFreeformTags:Q,preserveFreeformTagSelection:!!(e.compactEmbed&&Q.length),authorHandle:lt,authorName:Jr,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,priceRange:e.priceRange,prioritiseCommercialProducts:r,productSelection:ul(),query:e.query,region:e.region,selectedArticleId:sc,selectedBrands:e.selectedBrands,sort:c,website:e.website}),tg=hc.current!==yc||Jt.length===0,Da=[],vc=!1,ng=(me,zt=!1)=>{if(!_||zt&&vc)return;let bn=al(me,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange});ln(bn,c,r);let Di=yn(bn,ul(),c);v(uc(Da,Di,c,r))};if(Ir){y(!1),R(!1);return}if(tg){let me=Kr.current.split("|")[0],zt=e.website||"tomsguide",bn=!!(Kr.current&&me!==zt);!ne&&!Si&&R(!!e.compactEmbed||!on),bn&&(Jt=[],$f=[],v(()=>[]),j(()=>[]),ze(()=>[]),bi(()=>[]),Ie(()=>[]),Be({}),nt(()=>[]),de({}),Z(()=>[]),se({}),Yr(!1),Vr(""),Xr(""),y(!0));let Di=Qf.current&&Kr.current===$r&&Jt.length===0&&!De.current;Qf.current=!1,!Di&&!on&&y(!0);let lo=Ba=>{if(!_||Ba.length===0)return;let fe=eg(),it=Cf(Ba,fe),{displayedDeals:io}=ic(it.targetArticles,fe,it.activeRegionCode,it.targetIso);io.length!==0&&(Da=io,v(Da),y(!1),e.includeReviewProducts&&Nf(it.targetArticles,e.website||"tomsguide",Math.min(Wt,Gf),c).then(()=>{if(!_||vc)return;let An=ic(it.targetArticles,fe,it.activeRegionCode,it.targetIso);Da=An.displayedDeals,v(Da);let xi=An.displayedDeals.filter(dt=>dt.isReviewProduct&&dt.hawkModelName).slice(0,Gf).map(dt=>String(dt.hawkModelName));vi(An.extractedDeals,it.activeRegionCode,void 0,Gf,xi,dt=>ng(dt,!0))}))};if(Jt=await _v({authorHandle:lt,authorName:Jr,fallbackAuthorName:e.authorName,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,articleCategory:e.compactEmbed&&x||void 0,articleTag:e.compactEmbed?U1:void 0,pageStarts:e.compactEmbed&&!e.warmInventory&&!De.current?[0]:void 0,reviewPageStarts:e.includeReviewProducts?Ea?mc:!e.compactEmbed||De.current?Qv:void 0:void 0,loadAllReviewPages:!Ea,throwOnFailure:!!(e.compactEmbed&&De.current),onBackgroundRefresh:Ba=>{if(!_||hc.current!==yc)return;let fe=tl(Ba,void 0,Number(e.editorialMaxAgeMonths)||0);j(fe),at||ze(fe),g1(it=>it+1)},onProgress:lo,signal:oe.signal,website:e.website}),!_)return;if(Jt=tl(Jt,void 0,Number(e.editorialMaxAgeMonths)||0),Kr.current=$r,hc.current=yc,Di&&Jt.length===0){y(!1);return}_&&(j(Jt),at||ze(Jt),R(!1))}let eo=eg(),G1=Cf(Jt,eo),{activeDealTag:xa,activeRegionCode:Ci,authorArticles:ag,activeFreeformTags:Ma,freeformTagCounts:lg,freeformTags:to,tagCounts:ig,tags:Ri,targetArticles:_a,targetIso:P1}=G1,Ti=e.compactEmbed&&x&&!xa?x:xa,Ei=e.compactEmbed&&Q.length>0&&Ma.length===0?Q:Ma,q1=Ri.length>0?Ri:Ti?[Ti]:Ri,F1=to.length>0?to:Ei.length>0?t?.freeformTags?.filter(me=>Ei.includes(me.handle))||[]:to,j1={...ig,...Ti&&!xa?{[Ti]:0}:{}},Y1={...lg,...Object.fromEntries(Ma.length===0?Ei.map(me=>[me,0]):[])},no=Zf(xa,Ma,lt,Jr),rg=[$r,Ci,xa||"",Ma.join(","),e.selectedBrands.join(","),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),dl=null,fl=null;if(!at){let me=Kf.current;if(me?.key===rg&&me.articleCount===_a.length)dl=me.deals.length,fl=me.authorCount;else{let zt=dv(_a,eo);dl=zt.deals.length,fl=zt.authorCount,Kf.current={articleCount:_a.length,authorCount:fl,deals:zt.deals,key:rg}}}$f=Ri;let Ht;_&&(Ie(q1),Be(j1),nt(F1),de(Y1)),e.includeReviewProducts&&await Nf(_a,e.website||"tomsguide",l?Math.min(_a.length,i):Wt,c);let{brands:bc,displayedDeals:Ac,extractedDeals:ao}=ic(_a,eo,Ci,P1),{merchants:V1,couponMap:wc,couponUrl:X1}=Yv(Ac,e.region);_&&se(wc);let Q1=me=>{!_||!Ht||(Ht={...Ht,couponMap:me},window.__AUTHOR_PRELOAD_DATA__=Ht,e.onDataLoaded&&e.onDataLoaded(Ht))};if(hv({couponMap:wc,couponUrl:X1,merchants:V1}).then(me=>{_&&(se(me),Q1(me))}),_){tg&&P(Ti),nS(Q,Ei)||Vn(Ei),bi(ag);let me=uc(Da,Ac,c,r);if(vc=!0,v(me),dl!==null){let zt=t?.totalDealCount||0,bn=Ea&&zt>dl;b(bn?zt:dl),g(bn?Math.max(t?.totalAuthorCount||0,fl||0):fl||0)}!ol.current.has(no)&&Wf(xa,Ma)&&ol.current.set(no,t?.brands||[]),Z(ol.current.get(no)||bc),y(!1),Ht=fv({allArticles:Jt,authorArticles:ag,bakeReviewInventory:a&&!e.compactEmbed,brands:bc,couponMap:wc,currentDealTag:xa,currentFreeformTags:Ma,displayedDeals:me,inventoryArticles:_a,options:eo,resultCount:e.resultCount,tagCounts:ig,tags:Ri,freeformTagCounts:lg,freeformTags:to,totalAuthorCount:fl??h,totalDealCount:dl??A}),window.__AUTHOR_PRELOAD_DATA__=Ht,e.onDataLoaded&&e.onDataLoaded(Ht)}if((e.includeBuyingGuideProducts||e.includeReviewProducts)&&Ci!=="unavailable"){let me=Wt,zt=l?ao.filter(fe=>fe.isReviewProduct&&fe.hawkModelName).slice(0,i).map(fe=>String(fe.hawkModelName)):[],bn=Ac.filter(fe=>(fe.isBuyingGuideProduct||fe.isReviewProduct)&&fe.hawkModelName).map(fe=>String(fe.hawkModelName));ao.some(fe=>(fe.isBuyingGuideProduct||fe.isReviewProduct)&&fe.hawkModelName)&&M(!0);let lo=vi(ao,Ci,void 0,s?void 0:e.includeReviewProducts?l?i:me:void 0,[...zt,...bn],ng).then(async fe=>{if(!_)return;let it=al(fe,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(dt=>(dt.isBuyingGuideProduct||dt.isReviewProduct)&&dt.hawkModelName?{...dt,hawkPricePending:!1}:dt);ln(it,c,r);let io=yn(it,ul(),c),An=uc(Da,io,c,r),xi=hf(bc,fe);if(ol.current.set(no,xi),v(An),Z(xi),s&&b(it.length),Ht){let dt=a&&!e.compactEmbed,og=l,ug=dt?ac(An,Number(e.resultCount)||12):og?An.slice(0,i):An,K1=og?await jv(ug):ug;if(!_)return;let Sc={...Ht,allDeals:K1,deals:An.slice(0,me),brands:xi,totalDealCount:s?it.length:Ht.totalDealCount};Ht=Sc,window.__AUTHOR_PRELOAD_DATA__=Sc,e.onDataLoaded&&e.onDataLoaded(Sc)}}).finally(()=>{_&&M(!1)}),Ba=ao.slice(me,me+(Number(e.resultCount)||12));e.includeReviewProducts&&e.warmInventory&&!s&&!ne&&Ba.some(fe=>fe.hawkModelName)&&lo.then(()=>{_&&vi(Ba,Ci)}),ne&&await lo}}catch(lt){_&&D(!0)}finally{_&&(y(!1),R(!1),fc(!1),Ai.current=!1)}})(),()=>{_=!1,oe.abort()}},[e.query,e.region,e.selectedBrands,e.website,e.resultCount,Wt,c,e.priceRange,e.discountAmount,x,Q,e.authorName,e.authorHandle,e.website,e.authorBioLength,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,s,a,l,i,r,n,mc,e.productSelection,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,e.editorialMaxAgeMonths,sc,at,il,rl,f1,gc]);let Wr=e.website||"tomsguide",st=pc.current!==Wr,Ra=(0,N.useMemo)(()=>st?[]:y1.current===Wr&&t?.authors?t.authors:Lr(He.length>0?He:I,Wr),[I,Wr,He,t?.authors,st]),b1=at?il:e.authorHandle,A1=at?rl:e.authorName,w1=Ra.find(_=>_.handle===b1||_.fullName===A1),cl=He.length>0?He:I,If=(0,N.useMemo)(()=>{if(cl.length===0)return Ra;let _=wt(e.region),oe=an(_),ne=hi(Pr(cl,x),Q),we=Sf(Ra,ne,{activeRegionCode:_,targetIso:oe,selectedBrands:e.selectedBrands,priceRange:e.priceRange,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website});return Yu(Ra,we)},[x,Q,Ra,cl,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands]),S1=(0,N.useMemo)(()=>{if(st)return[];if(cl.length===0&&t?.authors?.length||e.compactEmbed&&!x&&Q.length===0&&t?.authors?.length)return Ra;let _=wt(e.region),oe=an(_),ne=hi(Pr(cl,x),Q).filter(we=>mi([we],{activeRegionCode:_,targetIso:oe,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website}).length>0);return kr(If,ne)},[x,Q,cl,st,at,t?.authors?.length,e.compactEmbed,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,If,e.website]),Jf=(_,oe)=>{let ne=He.length>0?He:I.length>0?I:d;if(ne.length===0)return;let we=yv(ne,{authorHandle:_,authorName:oe,discountAmount:e.discountAmount,priceRange:e.priceRange,region:e.region,selectedBrands:e.selectedBrands,sort:c,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,prioritiseCommercialProducts:r,website:e.website,productSelection:void 0});ll(null),P(null),Vn([]),bi(we.authorArticles),Ie(we.tags),Be(we.tagCounts),nt(we.freeformTags),de(we.freeformTagCounts),Z(we.brands),v(we.deals),y(!1)},C1=()=>{!e.compactEmbed||!t||(v(yn(Uf(t.deals||t.allDeals||[],c,r),ul(),c)),Ie(t.tags||[]),Be(t.tagCounts||{}),nt(t.freeformTags||[]),de(t.freeformTagCounts||{}),Z(t.brands||[]),se(t.couponMap||{}),g(t.totalAuthorCount??t.authors?.length??0),b(t.totalDealCount??t.deals?.length??t.allDeals?.length??0))},R1=_=>{Xn.current=!0,De.current=!0,R(!0),at&&(il===_.handle||rl===_.fullName)?(e.compactEmbed&&t?C1():Jf(e.authorHandle,e.authorName),Yr(!1),Vr(""),Xr("")):(Jf(_.handle,_.fullName),Yr(!0),Vr(_.handle),Xr(_.fullName)),e.onQueryChange?.("")},T1=_=>{Xn.current=!0,De.current=!0,R(!0);let oe=x===_?null:_;Zr(oe,Q),P(oe),e.onQueryChange?.("")},E1=()=>{Xn.current=!0,De.current=!0,R(!0)},D1=()=>{Xn.current=!0,De.current=!0,R(!0),Zr(null,Q),P(null),e.onQueryChange?.("")},x1=_=>{Xn.current=!0,De.current=!0,R(!0);let oe=Q.some(ne=>ne.toLowerCase()===_.toLowerCase())?Q.filter(ne=>ne.toLowerCase()!==_.toLowerCase()):[...Q,_];Zr(x,oe),Vn(oe)},M1=()=>{Xn.current=!0,De.current=!0,R(!0),Zr(x,[]),Vn([])},_1=_=>{Xn.current=!0,De.current=!0,R(!0),ll(_)},B1=()=>{if(Ai.current)return;Ai.current=!0,fc(!0);let _=Wt+(e.resultCount?parseInt(e.resultCount,10):12);!!(n&&e.compactEmbed&&!De.current)&&I.length>0&&m.length<_&&p1(we=>{let Ta=Qv[we.length];return Ta===void 0?we:[...we,Ta]}),dc(we=>(Qr(we),we+(e.resultCount?parseInt(e.resultCount,10):12)));let ne=!!(t?.reviewInventoryBaked&&m.length>Wt);e.compactEmbed&&I.length===0&&!ne&&(R(!0),h1(!0))},wi=e.compactEmbed&&!e.refreshDealsOnViewport,N1=wi&&t?.tags?.length?t.tags:St,O1=wi&&t?.tags?.length?t.tagCounts||{}:rn,k1=wi&&!De.current&&t?.brands?.length?t.brands:$e,L1=wi&&t?.freeformTags?.length&&(!De.current||Q.length===1)?t.freeformTags:Je,H1=wi&&t?.freeformTags?.length&&(!De.current||Q.length===1)?t.freeformTagCounts||{}:X,z1=pv({enrichingBuyingGuides:T,error:w,loading:p,loadingMore:Xf,refreshingFeed:C});return{activeDealTag:x,activeFreeformTags:Q,airedaleBrands:st?[]:k1,airedaleTagCounts:st?{}:O1,airedaleTags:st?[]:N1,airedaleFreeformTagCounts:st?{}:H1,airedaleFreeformTags:st?[]:L1,allAuthorsList:S1,authorArticlesList:st?[]:jr,clickedAuthorOverride:at,couponMap:k,deals:st?[]:m,displayCount:Wt,error:w,enrichingBuyingGuides:T,effectiveAuthorProfile:st?void 0:w1,loading:p,loadingMore:Xf,loadMoreStartCount:m1,markProductSelectionInteracted:E1,hasMore:m.length>Wt||!!e.compactEmbed&&A>m.length,loadMore:B1,refreshingFeed:C,overriddenAuthorHandle:il,overriddenAuthorName:rl,selectedArticleId:sc,setActiveDealTag:P,clearDealTag:D1,clearFreeformTags:M1,selectArticle:_1,setDisplayCount:dc,setSelectedArticleId:ll,status:z1,toggleAuthorOverride:R1,toggleDealTag:T1,toggleFreeformTag:x1,totalAuthorCount:st?0:h,totalDealCount:st?0:A}}var aS=B(ft(),1);var Fr=B(ft(),1);function Zv(e){let[t,n]=(0,Fr.useState)(null),[a,l]=(0,Fr.useState)([]),[i,r]=(0,Fr.useState)(!1),[o,u]=(0,Fr.useState)(!1);return{close:()=>n(null),error:o,loading:i,merchant:t,open:async f=>{n(f),r(!0),u(!1),l([]);try{let d=Vv(f,e),m=await fetch(d.toString());if(!m.ok)throw new Error("API Error");l(mv(await m.json()))}catch(d){u(!0)}finally{r(!1)}},vouchers:a}}var je=B(O(),1);function lS(e){return new Set(e.map(t=>Array.isArray(t.authorName)?t.authorName[0]:t.authorName).map(t=>String(t||"").trim().toLowerCase()).filter(Boolean)).size}var iS=new Map,rS=()=>{};function Iv({data:e,editorBar:t,editorMode:n=!1,props:a,selectedDeals:l=iS,setSelectedDeals:i=rS}){let r=Zv(a.region),[o,u]=(0,Wv.useState)(new Set),c=p0[a.website||""]||"#1F69FF",s=a.backgroundColor?a.backgroundColor==="white"?"#ffffff":a.backgroundColor==="transparent"?"transparent":a.backgroundColor==="light_blue"?"#E7F0FF":void 0:void 0,f=Vu(a.authorHandle,a.authorName),d=Or(a),m=Fu(a),v=wa(m?"date_desc":a.sort,!d),A=!!(a.showReviewSort&&a.includeReviewProducts),b=a.showPriceDiscountFilters!==!1||A,h=!a.authorFullBleed,g=!e.clickedAuthorOverride,p=e.totalDealCount||e.deals.length,y=e.totalAuthorCount||lS(e.deals),C=e.status==="loading_inventory"||e.status==="refreshing_inventory"||e.status==="enriching_visible_cards",R=e.status==="loading_inventory"||(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards")&&e.deals.length===0,M=!!(a.showReviewSort&&a.includeReviewProducts&&(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards"))?"Loading and sorting available review products":e.status==="enriching_visible_cards"?"Adding live product images and prices":e.status==="refreshing_inventory"?"Updating products":`Loading ${a.website||"site"} authors and products`,w=j=>{e.markProductSelectionInteracted(),a.onBrandToggle?.(j)},D=j=>{e.markProductSelectionInteracted(),a.onBrandSelect?.(j)},k=j=>{e.markProductSelectionInteracted(),a.onPriceRangeChange?.(j)},se=j=>{e.markProductSelectionInteracted(),a.onDiscountAmountChange?.(j)},I=j=>{e.markProductSelectionInteracted(),a.onSortChange?.(j)};return(0,je.jsx)("div",{className:"tg-df-widget-host",style:{"--tg-df-blue":c.toUpperCase()==="#FFFFFF"?"#000000":c},"data-vizualizer-embed":"true","data-tg-df-full-bleed":a.authorFullBleed?"true":"false","data-tg-df-mobile-dropdowns":a.mobileDropdowns?"true":"false","data-tg-df-sticky-mobile-filters":a.stickyMobileFilters===!1?"false":"true",children:(0,je.jsxs)("div",{className:"tg-df-container article-body",style:a.backgroundColor?{backgroundColor:s}:void 0,children:[(a.showAuthorIdentity!==!1||a.showAuthorBio!==!1)&&(0,je.jsx)("div",{className:"tg-df-author-embed",style:{width:"100%",fontFamily:"inherit"},children:(0,je.jsx)("div",{className:"tg-df-author-section",style:{display:"block",opacity:1,overflow:"visible",background:"transparent",border:"none"},children:(0,je.jsx)(U0,{authorArticlesList:e.authorArticlesList,authorBioLength:a.authorBioLength,customBio:g?a.customBio:void 0,customHeaderKicker:a.customHeaderKicker,customHeaderTitle:a.customHeaderTitle,effectiveAuthorHandle:e.clickedAuthorOverride?e.overriddenAuthorHandle:a.authorHandle,effectiveAuthorName:e.clickedAuthorOverride?e.overriddenAuthorName:a.authorName,isReviewWidget:d,onBioChange:g?a.onBioChange:void 0,onHeaderKickerChange:a.onHeaderKickerChange,onHeaderTitleChange:a.onHeaderTitleChange,selectedProfile:e.effectiveAuthorProfile,showAuthorBio:a.showAuthorBio,showAuthorIdentity:a.showAuthorIdentity,showSocialButtons:a.showSocialButtons,stabilizeBio:f,authorCount:y,totalDealCount:p,website:a.website})})}),t,a.showCollectionsDropdown&&(0,je.jsx)(r0,{articles:e.authorArticlesList,authorHandle:a.authorHandle,authorName:a.authorName||a.author,onChange:e.selectArticle,selectedArticleId:e.selectedArticleId,shortenedHeadlines:a.shortenedHeadlines}),C&&(0,je.jsxs)("div",{role:"status","aria-live":"polite","aria-label":M,style:{alignItems:"center",display:"flex",justifyContent:"center",marginBottom:"16px",minHeight:"72px"},children:[(0,je.jsx)("span",{className:"tg-df-coupon-spinner","aria-hidden":"true",style:{borderWidth:"3px",height:"24px",width:"24px"}}),(0,je.jsxs)("span",{style:{color:"#4B5563",fontSize:"14px",marginLeft:"10px"},children:[M,"\u2026"]})]}),(0,je.jsx)(_0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,allAuthorsList:e.allAuthorsList,brands:a.brands,clickedAuthorOverride:e.clickedAuthorOverride,loading:e.loading,refreshing:e.refreshingFeed,onAuthorClick:e.toggleAuthorOverride,onBrandToggle:w,onFreeformTagClick:e.toggleFreeformTag,onTagClick:e.toggleDealTag,overriddenAuthorHandle:e.overriddenAuthorHandle,overriddenAuthorName:e.overriddenAuthorName,selectedBrands:a.selectedBrands,showAuthorRail:f&&a.showAuthorRail!==!1,showAuthorCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,website:a.website}),(0,je.jsx)(k0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,brands:a.brands,discountAmount:a.discountAmount,enabled:a.mobileDropdowns||h,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,onBrandSelect:D,onBrandToggle:w,onDiscountAmountChange:se,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,onPriceRangeChange:k,onReviewSortChange:I,onTagClear:e.clearDealTag,onTagClick:e.toggleDealTag,priceRange:a.priceRange,reviewSort:v,selectedBrands:a.selectedBrands||[],showCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),b&&(0,je.jsx)(L0,{airedaleBrands:e.airedaleBrands,airedaleTags:e.airedaleTags,discountAmount:a.discountAmount,hidden:!!e.selectedArticleId,onDiscountAmountChange:se,onPriceRangeChange:k,onReviewSortChange:I,priceRange:a.priceRange,reviewSort:v,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),(0,je.jsx)(i0,{articles:e.authorArticlesList,selectedArticleId:e.selectedArticleId}),(a.showCategoryRail!==!1||a.showFreeformTagRail!==!1||a.showBrandRail!==!1)&&(0,je.jsx)(a0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleTags:e.airedaleTags,freeformTags:e.airedaleFreeformTags,discountAmount:a.discountAmount,onBrandSelect:D,onBrandToggle:w,onDiscountAmountChange:se,onPriceRangeChange:k,onTagClear:e.clearDealTag,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,priceRange:a.priceRange,selectedBrands:a.selectedBrands||[]}),(0,je.jsx)(w0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,couponMap:e.couponMap,deals:e.deals,displayCount:e.displayCount,editorMode:n,error:e.error,expandedDealIds:o,hasMore:e.hasMore,hideHawkPrices:a.hideHawkPrices,loading:R,loadingMore:e.loadingMore,loadMoreStartCount:e.loadMoreStartCount,onDescriptionToggle:j=>u(He=>{let ze=new Set(He);return ze.has(j)?ze.delete(j):ze.add(j),ze}),onLoadMore:e.loadMore,onOpenVouchers:r.open,query:a.query,recentDealsOnly:!!(a.includeDeals&&!a.includeCollections&&!a.includeBuyingGuideProducts&&!a.includeReviewProducts),selectedBrands:a.selectedBrands,selectedDeals:l,setSelectedDeals:i,website:a.website}),(0,je.jsx)(G0,{error:r.error,loading:r.loading,merchant:r.merchant,onClose:r.close,vouchers:r.vouchers})]})})}var $v=B(O(),1),Jv=e=>{let t={...e,editorMode:!1},n=qf(t);return(0,$v.jsx)(Iv,{data:n,props:t})};var U={authorBioLength:"short",authorFullBleed:!0,authorHandle:"all-authors",authorName:"All authors",backgroundColor:"transparent",customBio:"",customHeaderKicker:void 0,customHeaderTitle:void 0,discountAmount:"0",editorMode:!1,editorialMaxAgeMonths:"12",includeBuyingGuideProducts:!0,includeCollections:!0,includeDeals:!0,includeReviewProducts:!1,mobileDropdowns:!0,stickyMobileFilters:!0,offerType:"",preloadReviewInventory:!1,lightweightReviewDelivery:!1,hideHawkPrices:!1,prioritiseCommercialProducts:!0,priceRange:"all",productSelection:"latest",query:"Everything",region:"auto",resultCount:"12",retailer:"",selectedBrands:[],showAuthorBio:!0,showAuthorCounters:!0,showAuthorIdentity:!0,showAuthorRail:!0,showBrandRail:!0,showCategoryRail:!0,showCollectionsDropdown:!1,showPriceDiscountFilters:!0,showReviewSort:!1,showSocialButtons:!0,showCountdown:!1,showHeaderDetails:!0,showFreeformTagRail:!0,sort:"date_desc",viewMode:"author",website:"whowhatwear",widgetSubtitle:"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.",widgetTitle:"Top Deals Handpicked by Our Editors"};function We(e,t){return typeof e=="string"?e:t}function Ae(e,t){return typeof e=="boolean"?e:t}function e1(e){let t=e||{},n=t.authorBioLength==="long"?"long":"short",a=t.productSelection==="mix"?"mix":"latest";return{...U,...t,authorBioLength:n,authorFullBleed:Ae(t.authorFullBleed,U.authorFullBleed),authorHandle:We(t.authorHandle,U.authorHandle),authorName:We(t.authorName,U.authorName),backgroundColor:We(t.backgroundColor,U.backgroundColor),customBio:We(t.customBio,U.customBio),customHeaderKicker:typeof t.customHeaderKicker=="string"?t.customHeaderKicker:void 0,customHeaderTitle:typeof t.customHeaderTitle=="string"?t.customHeaderTitle:void 0,discountAmount:We(t.discountAmount,U.discountAmount),editorMode:Ae(t.editorMode,U.editorMode),editorialMaxAgeMonths:We(t.editorialMaxAgeMonths,U.editorialMaxAgeMonths),includeBuyingGuideProducts:Ae(t.includeBuyingGuideProducts,U.includeBuyingGuideProducts),includeCollections:Ae(t.includeCollections,U.includeCollections),includeDeals:Ae(t.includeDeals,U.includeDeals),includeReviewProducts:Ae(t.includeReviewProducts,U.includeReviewProducts),mobileDropdowns:Ae(t.mobileDropdowns,U.mobileDropdowns),stickyMobileFilters:Ae(t.stickyMobileFilters,U.stickyMobileFilters),offerType:We(t.offerType,U.offerType),preloadReviewInventory:Ae(t.preloadReviewInventory,U.preloadReviewInventory),lightweightReviewDelivery:Ae(t.lightweightReviewDelivery,U.lightweightReviewDelivery),hideHawkPrices:Ae(t.hideHawkPrices,U.hideHawkPrices),prioritiseCommercialProducts:Ae(t.prioritiseCommercialProducts,U.prioritiseCommercialProducts),priceRange:We(t.priceRange,U.priceRange),productSelection:a,query:We(t.query,U.query),region:We(t.region,U.region),resultCount:We(t.resultCount,U.resultCount),retailer:We(t.retailer,U.retailer),selectedBrands:Array.isArray(t.selectedBrands)?t.selectedBrands.filter(l=>typeof l=="string"):[],showAuthorBio:Ae(t.showAuthorBio,U.showAuthorBio),showAuthorCounters:Ae(t.showAuthorCounters,U.showAuthorCounters),showAuthorIdentity:Ae(t.showAuthorIdentity,U.showAuthorIdentity),showAuthorRail:Ae(t.showAuthorRail,U.showAuthorRail),showBrandRail:Ae(t.showBrandRail,U.showBrandRail),showCategoryRail:Ae(t.showCategoryRail,U.showCategoryRail),showCollectionsDropdown:Ae(t.showCollectionsDropdown,U.showCollectionsDropdown),showPriceDiscountFilters:Ae(t.showPriceDiscountFilters,U.showPriceDiscountFilters),showReviewSort:Ae(t.showReviewSort,U.showReviewSort),showSocialButtons:Ae(t.showSocialButtons,U.showSocialButtons),showCountdown:Ae(t.showCountdown,U.showCountdown),showHeaderDetails:Ae(t.showHeaderDetails,U.showHeaderDetails),showFreeformTagRail:Ae(t.showFreeformTagRail,U.showFreeformTagRail),sort:We(t.sort,U.sort),viewMode:We(t.viewMode,U.viewMode),website:We(t.website,U.website),widgetSubtitle:We(t.widgetSubtitle,U.widgetSubtitle),widgetTitle:We(t.widgetTitle,U.widgetTitle)}}function t1(e,t={}){return{...e,brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}}function n1(e,t){try{window.hawk?.analytics?.freyr?.push({name:e,data:t}),window.dispatchEvent(new CustomEvent("hawk-analytics-update")),window.freyr?.cmd.push(()=>{window.freyr?.pushAndUpdate?.(e,t)})}catch{}}function a1(){window.dataLayer=window.dataLayer||[],window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.hawk=window.hawk||{},window.hawk.analytics=window.hawk.analytics||{},window.hawk.analytics.freyr=window.hawk.analytics.freyr||[],window.freyr=window.freyr||{cmd:[]},window.freyr.cmd=window.freyr.cmd||[];let e="https://freyr.futurecdn.net/freyr.js",t=window.location.hostname;if(!(window.navigator.webdriver||window.navigator.userAgent.includes("Headless"))&&!!t&&t!=="localhost"&&t!=="127.0.0.1"&&!t.includes("run.app")&&!document.querySelector(`script[src="${e}"]`)){let l=document.createElement("script");l.src=e,l.async=!0,document.head.appendChild(l)}}function oS(e){let t=Number.parseFloat(e.rawPrice||e.price)||null,n=Number.parseFloat(e.rawMsrp||e.msrp)||null;return{product:{primary:{id:e.externalProductId||e.id||e.matchId||null,name:e.productName||e.title||"",type:"deal",price:t,previousPrice:n,currency:e.isoCurrencyCode||e.currency||"USD",preorder:!1,labels:e.modelBrand||e.brand?[{type:"brand",value:e.modelBrand||e.brand}]:[],link:e.url||null,originalLink:e.originalLink||e.url||null,revenueId:e.revenueId||null,startTime:null,endTime:null,voucherCode:null,voucherAudience:null,voucherPercentageSaving:n&&t&&n>t?Math.round((1-t/n)*100):null,voucherMoneySaving:null,voucherType:null,offerExclusive:!1,offerScope:null,globalId:e.productKey||null,inStock:e.inStock!==!1,contractProvider:null,contractMinutes:null,contractTexts:null,contractData:null,contractLength:null,contractMonthlyPrice:null,contractCurrency:e.isoCurrencyCode||e.currency||"USD"}},merchant:{id:e.merchantId||null,name:e.merchant||"Retailer",url:e.merchantUrl||null,network:e.merchantNetwork||null},model:{id:e.modelId||null,brand:e.modelBrand||e.brand||null,name:e.productName||e.title||"",parent:e.modelParent||null}}}var uS=new Set(["subid1","ascsubtag","clickref","u1"]);function cS(e){return e.match(/(?:^|[-_])(\d{10,})(?=$|[-_])/)?.[1]||null}function sS(e){let t=new Set,n=a=>{if(!a||t.has(a))return null;t.add(a);let l;try{l=new URL(a)}catch{return null}for(let[i,r]of l.searchParams)if(uS.has(i.toLowerCase())){let o=cS(r);if(o)return o}for(let i of l.searchParams.values())if(/^https?:\/\//i.test(i)){let r=n(i);if(r)return r}return null};return n(e)}function l1({areaClicked:e,clickType:t,deals:n,index:a,queryName:l}){let i={event:"hawkEvent",category:"Affiliates",affiliate:{action:{type:t,id:"author-widget",event:t==="appeared"?"viewed":"Click from",timestamp:Date.now()},component:{flag:"Editor",product:"deals",category:"Signal Deal Finder Author widget",type:t==="appeared"?"review":"signal product",label:l||n[0]?.productName||n[0]?.title||"",index:a??-1,linkCount:n.length,blockLayout:"",areaClicked:e}},products:n.slice(0,20).map(oS),reviews:[],_clear:!0,"gtm.uniqueEventId":Date.now()%1e4};n1("hawkEvent",i)}function i1(e,t){e.length&&l1({areaClicked:"",clickType:"appeared",deals:e,index:null,queryName:t})}function r1(e,t){if(e?.deals?.length)return e.deals;let n=Number(t)||12;return e?.allDeals?.slice(0,n)||[]}function o1(e){e.addEventListener("click",t=>{let n=t.target;if(!(n instanceof Element))return;let a=n.closest("a[data-fcaw-affiliate-link][href], a.hawk-affiliate-link-deal-widget[href], a.hawk-affiliate-link-container[href], a.hawk-affiliate-link-deal-button[href]"),l=n.closest(".tg-df-card"),i=!!(!a?.dataset.fcawRevenueId&&(a?.hasAttribute("data-hl-processed")||a?.hasAttribute("data-fcaw-hawklinks-requested")));a&&l&&!i&&l1({areaClicked:"Signal Product Card",clickType:"retailer",deals:[{brand:l.dataset.brand,currency:l.dataset.currency,id:l.dataset.dealId,merchant:a.dataset.merchant||l.dataset.merchant,merchantId:a.dataset.merchantId||l.dataset.merchantId,modelId:a.dataset.modelId||l.dataset.modelId,productKey:a.dataset.productKey||l.dataset.productKey,rawMsrp:l.dataset.previousPrice,rawPrice:l.dataset.price,originalLink:a.dataset.fcawOriginalLink||a.href,revenueId:a.dataset.fcawRevenueId||sS(a.href),title:l.dataset.productName,url:a.href}],index:Array.from(e.querySelectorAll(".tg-df-card")).indexOf(l)});let r=n.closest('button, select, [role="button"]');r&&n1("elementInteraction",{element:{action:"click",id:r.id||void 0,class:r.className||void 0,name:r.getAttribute("name")||r.getAttribute("aria-label")||void 0,text:r.textContent?.trim()||void 0,label:r.getAttribute("aria-label")||void 0}})})}var Vf=B(O(),1),dS='fc-author-commerce-widget[data-fcaw-version="1"]',fS="(max-width: 599px)",gS=600,mS='[class*="membership-expandable-banner"]',hS=/^jump\s+to\b/i,jf="data-fcaw-jump-navigation-suppressed",pS=50,yS=1e4,vS=["[data-sticky-header]","[data-header-sticky]",'[role="banner"]',".navigation__container",".site-header",".main-header",".header__container",'[class*="membership-expandable-banner"] [class*="skinny-banner"]','[class*="membership-expandable-banner"] [id="skinnyBanner"]',"nav","header"].join(","),bS=`  :host {    display: block !important;    width: 100% !important;    min-width: 0 !important;    max-width: none !important;    isolation: isolate !important;    contain: style !important;  }  :host([data-fcaw-full-bleed="true"]) {    width: min(      1200px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1200px !important;    margin-left: var(      --fcaw-full-bleed-offset,      calc(50% - min(600px, 50vw))    ) !important;    margin-right: 0 !important;    position: relative !important;  }  :host([data-fcaw-full-bleed="true"]) #tg-df-spreadsheet-filters {    width: min(      1500px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1500px !important;    margin-left: calc(      (        100% -        min(1500px, var(--fcaw-viewport-width, 100vw))      ) / 2    ) !important;    margin-right: 0 !important;  }  :host, :host *, :host *::before, :host *::after {    box-sizing: border-box;  }`,Ff=new WeakMap;function AS(){if(document.querySelector("style[data-fcaw-jump-navigation-protection]"))return;let e=document.createElement("style");e.setAttribute("data-fcaw-jump-navigation-protection",""),e.textContent=`    [${jf}="true"] {      opacity: 0 !important;      pointer-events: none !important;      visibility: hidden !important;    }  `,document.head.appendChild(e)}function wS(){let e=Array.from(document.querySelectorAll("span, p, div, strong, b")).filter(n=>n.childElementCount===0&&hS.test(n.textContent?.trim()||"")),t=new Set;for(let n of e)for(let a=n.parentElement;a&&a!==document.body;a=a.parentElement)if(getComputedStyle(a).position==="sticky"){t.add(a);break}return[...t]}function SS(e,t,n){let a=Ff.get(e)||new Set;n?a.add(t):a.delete(t),a.size>0?(Ff.set(e,a),e.setAttribute(jf,"true")):(Ff.delete(e),e.removeAttribute(jf))}function CS(e){if(e.dataset.fcawFullBleed!=="true"||typeof IntersectionObserver>"u")return;let t=wS().filter(a=>!a.contains(e));if(t.length===0)return;AS(),new IntersectionObserver(([a])=>{t.forEach(l=>SS(l,e,a.isIntersecting))},{threshold:0}).observe(e)}function RS({host:e,initialData:t,initialProps:n}){let[a]=(0,Lt.useState)(d1),l=DS(t,a),[i,r]=(0,Lt.useState)(n.query),[o,u]=(0,Lt.useState)(n.selectedBrands),[c,s]=(0,Lt.useState)(n.priceRange),[f,d]=(0,Lt.useState)(n.discountAmount),[m,v]=(0,Lt.useState)(n.sort),[A,b]=(0,Lt.useState)(!1),h=!!(A&&n.compactEmbed&&n.includeDeals!==!1),g=(0,Lt.useRef)(!1);return(0,Lt.useEffect)(()=>{let p=()=>{g.current||(g.current=!0,i1(r1(l,n.resultCount),n.query))};if(typeof IntersectionObserver>"u"){p();return}let y=new IntersectionObserver(([C])=>{C?.isIntersecting&&(p(),y.disconnect())},{threshold:.1});return y.observe(e),()=>y.disconnect()},[e,l,n.query]),(0,Lt.useEffect)(()=>{if(typeof IntersectionObserver>"u"){b(!0);return}let p=new IntersectionObserver(([y])=>{y?.isIntersecting&&(b(!0),p.disconnect())},{rootMargin:"800px 0px"});return p.observe(e),()=>p.disconnect()},[e]),(0,Vf.jsx)(Jv,{...n,region:a||"unavailable",initialData:l,warmInventory:A,refreshDealsOnViewport:h,query:i,selectedBrands:o,priceRange:c,discountAmount:f,sort:m,editorMode:!1,onQueryChange:r,onBrandSelect:u,onBrandToggle:p=>u(y=>y.includes(p)?y.filter(C=>C!==p):[...y,p]),onPriceRangeChange:s,onDiscountAmountChange:d,onSortChange:v})}function TS(e){try{let t=document.cookie.match(new RegExp(`(?:^|;\\s*)${e}=([^;]*)`));return t?decodeURIComponent(t[1]):void 0}catch{return}}function cc(e){let n=String(e||"").trim().toUpperCase().replace("_","-").split("-").at(-1);return n==="UK"?"GB":["US","GB","AU","CA","DE","FR","IT","ES","NL"].includes(n||"")?n:void 0}function d1(){let e=new URLSearchParams(window.location.search).get("area");return cc(e)||cc(TS("FTR_Country_Code"))||cc(document.documentElement.getAttribute("data-locale"))||cc(window.navigator.language)}function u1(e,t){let n=e.querySelector(t);if(n?.textContent)try{return JSON.parse(n.textContent)}catch(a){console.warn("Author widget configuration could not be parsed.",a);return}}function ES(e){return e?.reviewInventoryFormat!==nv||!e.allDeals?e:{...e,allDeals:av(e.allDeals)}}function DS(e,t){let n=t?e?.regionalDealManifests?.[t]:void 0;if(!n)return e;let a=e?.regionalDealRailData?.[t];return{...e,allDeals:void 0,deals:n,...a}}function c1(e){e.querySelectorAll("a[href]").forEach(t=>{(t.hasAttribute("data-fcaw-affiliate-link")||t.classList.contains("hawk-affiliate-link-deal-widget")||t.classList.contains("hawk-affiliate-link-container")||t.classList.contains("hawk-affiliate-link-deal-button"))&&(t.rel="sponsored nofollow noopener")})}function xS(e){let t=e.closest(".tg-df-card"),n=t?.dataset.fcawRevenueId||e.dataset.fcawRevenueId;if(n)return n;let a=[window.location.href,t?.dataset.productName||"",t?.dataset.merchant||"",t?.dataset.modelId||"",new Date().toDateString(),"tomsguide"].join("|"),l=0;for(let r=0;r<a.length;r+=1)l=(l<<5)-l+a.charCodeAt(r),l|=0;let i=String(Math.abs(l));for(;i.length<19;)l=(l<<5)-l+i.length,l|=0,i+=String(Math.abs(l));return i=i.slice(0,19),t&&(t.dataset.fcawRevenueId=i),i}function MS(e){let t=e.dataset.fcawOriginalLink||e.href;if(!t.includes("hawk-custom-tracking"))return!1;let n=d1();if(!n)return!1;let a=xS(e);return e.dataset.fcawOriginalLink=t,e.dataset.fcawRevenueId=a,e.href=t.replaceAll("hawk-custom-tracking",`tomsguide-${n.toLowerCase()}-${a}`),e.setAttribute("data-fcaw-hawklinks-requested","true"),!0}function _S(){return!!window.hawklinks?.version}function BS(e){let t=!1,n,a,l=()=>Array.from(e.querySelectorAll(".article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-widget[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-container[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-button[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested])")),i=()=>{t=!1;let u=l();if(u.length===0)return;let c=u.filter(s=>!MS(s));if(c.length!==0){if(!_S()){let s=Date.now();a??=s,!n&&s-a<yS&&(n=window.setTimeout(()=>{n=void 0,r()},pS));return}a=void 0,c.forEach(s=>s.setAttribute("data-fcaw-hawklinks-requested","true")),document.dispatchEvent(new CustomEvent("processArticle",{detail:{element:e}}))}},r=()=>{t||(t=!0,window.setTimeout(i,0))},o=new MutationObserver(r);return o.observe(e,{attributes:!0,attributeFilter:["href"],childList:!0,subtree:!0}),r(),()=>{o.disconnect(),n&&window.clearTimeout(n)}}function NS(e){if(e.dataset.fcawFullBleed!=="true")return;let t=()=>{let n=document.documentElement.clientWidth||window.innerWidth,a=Math.min(1200,n),l=Math.max(0,(n-a)/2),i=e.parentElement?.getBoundingClientRect().left||0;e.style.setProperty("--fcaw-full-bleed-offset",`${l-i}px`),e.style.setProperty("--fcaw-viewport-width",`${n}px`)};t(),window.addEventListener("resize",t,{passive:!0}),typeof ResizeObserver<"u"&&e.parentElement&&new ResizeObserver(t).observe(e.parentElement)}function OS(e){let t=window.matchMedia(fS),n=!1,a=new Set,l=new Map,i,r=()=>t.matches||e.getBoundingClientRect().width<gS,o=()=>{n||(n=!0,window.requestAnimationFrame(s))},u=()=>{if(typeof MutationObserver>"u")return;let f=new Set(Array.from(document.querySelectorAll(mS)));l.forEach((d,m)=>{f.has(m)&&m.isConnected||(d.disconnect(),l.delete(m))}),f.forEach(d=>{if(l.has(d))return;let m=new MutationObserver(o);m.observe(d,{attributes:!0,attributeFilter:["class","style"],childList:!0,subtree:!0}),l.set(d,m)})},c=f=>{let d=new Set(f);a.forEach(m=>{d.has(m)||(i?.unobserve(m),m.removeEventListener("transitionend",o),a.delete(m))}),f.forEach(m=>{a.has(m)||(i?.observe(m),m.addEventListener("transitionend",o),a.add(m))})},s=()=>{if(n=!1,u(),!r()){c([]),e.style.removeProperty("--fcaw-mobile-sticky-offset");return}let f=Number.parseFloat(getComputedStyle(e).getPropertyValue("--fcaw-publisher-sticky-offset"));if(Number.isFinite(f)&&f>=0){c([]),e.style.setProperty("--fcaw-mobile-sticky-offset",`${f}px`);return}let d=Array.from(document.querySelectorAll(vS)).filter(v=>{if(v.contains(e))return!1;let A=getComputedStyle(v).position;return A==="fixed"||A==="sticky"});c(d);let m=d.reduce((v,A)=>{let b=A.getBoundingClientRect();return b.top>2||b.bottom<=0||b.height<=0||b.height>window.innerHeight*.5?v:Math.max(v,b.bottom)},0);e.style.setProperty("--fcaw-mobile-sticky-offset",`${Math.ceil(m)}px`)};return typeof ResizeObserver<"u"&&(i=new ResizeObserver(o),i.observe(e)),s(),window.addEventListener("scroll",o,{capture:!0,passive:!0}),window.addEventListener("resize",o,{passive:!0}),t.addEventListener?.("change",o),()=>{window.removeEventListener("scroll",o,!0),window.removeEventListener("resize",o),t.removeEventListener?.("change",o),i?.disconnect(),a.forEach(f=>f.removeEventListener("transitionend",o)),a.clear(),l.forEach(f=>f.disconnect()),l.clear()}}function kS(e){if(e.dataset.fcawEnhanced==="true")return;let t=u1(e,"script[data-fcaw-config]");if(!t)return;let n={...t1(e1(t),{brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}),compactEmbed:t.compactEmbed,editorMode:!1,warmInventory:t.warmInventory},a=u1(e,"script[data-fcaw-preload]"),l=ES(a),i=e.querySelector("[data-fcaw-fallback]");if(!i)return;NS(e),CS(e),n.stickyMobileFilters!==!1&&OS(e),c1(i);let r=e.shadowRoot||e.attachShadow({mode:"open"}),o=e.querySelector(":scope > style[data-fcaw-host-protection]");if(o&&r.appendChild(o),!r.querySelector("style[data-fcaw-shadow-protection]")){let c=document.createElement("style");c.setAttribute("data-fcaw-shadow-protection",""),c.textContent=bS,r.appendChild(c)}i.querySelectorAll(":scope > style").forEach(c=>{r.appendChild(c)});let u=document.createElement("div");for(u.setAttribute("data-fcaw-mount","");i.firstChild;)u.appendChild(i.firstChild);i.remove(),r.appendChild(u),e.dataset.fcawEnhanced="true",a1(),e.dataset.fcawAnalyticsReady="true",o1(r),BS(r),(0,s1.createRoot)(u).render((0,Vf.jsx)(RS,{host:e,initialData:l,initialProps:n})),window.setTimeout(()=>c1(r),0)}function Yf(){document.querySelectorAll(dS).forEach(kS)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Yf,{once:!0}):Yf();new MutationObserver(Yf).observe(document.documentElement,{childList:!0,subtree:!0});})();/*! Bundled license information:react/cjs/react.production.js:  (**   * @license React   * react.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)scheduler/cjs/scheduler.production.js:  (**   * @license React   * scheduler.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom.production.js:  (**   * @license React   * react-dom.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom-client.production.js:  (**   * @license React   * react-dom-client.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react/cjs/react-jsx-runtime.production.js:  (**   * @license React   * react-jsx-runtime.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)*/</script></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><h2 class="article-body__section" id="section-prime-day-gaming-mouse-deals-in-the-uk"><span>Prime Day gaming mouse deals in the UK</span></h2><h2 id="where-are-the-best-prime-day-gaming-keyboard-mouse-and-controller-deals-in-the-uk">Where are the best Prime Day gaming keyboard, mouse, and controller deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=gaming+mice&crid=LB80KGTDLNUC&sprefix=gaming+mice%2Caps%2C142&ref=nb_sb_noss_1" target="_blank">Big discounts on top-brand gaming mice</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/peripherals/mice/gaming-mice" target="_blank">Over 100 gaming mice to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/search?q=gaming+mice" target="_blank">Gaming mice from just £18</a></li><li><strong>Box: </strong><a href="https://box.co.uk/gaming-mice" target="_blank">Gaming mice from Asus, Logitech, and Razer</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/search?q=gaming%20mice" target="_blank">Mice from as little as £20</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/gaming-mice/?clickOrigin=searchbar:search:term:gaming+mice" target="_blank">Good prices on budget to high-end mice</a></li></ul><div class="product"><a data-dimension112="8f407f3c-bb39-11f1-8991-4f2d86e6f914" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="£19.99" href="https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1401px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qgFqUinn2HCKHEThJ47QpC" name="1636734797.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qgFqUinn2HCKHEThJ47QpC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1401" height="1401" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/" target="_blank" rel="nofollow" data-dimension112="8f407f3c-bb39-11f1-8991-4f2d86e6f914" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="£19.99">G203 | Wired: was £30.99 now £19.99</a></strong><br>Perfect as a starter or low-budget option with a list of useful features like 6 programmable buttons, Lightsync RGB effects and a ton of customisation via Logitech's G Hub software, this mouse proves that you don't need to go fancy to get a great gaming peripheral.</p><p><strong>Key specs: Wired | 8,000 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Lightsync-Customizable-Lighting-Programmable/dp/B07W5JKFQC/" target="_blank" rel="nofollow" data-dimension112="8f407f3c-bb39-11f1-8991-4f2d86e6f914" data-action="Deal Block" data-label="G203 | Wired" data-dimension48="G203 | Wired" data-dimension25="£19.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f407fa0-bb39-11f1-8ef1-07da27d3dfb9" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="£19.99" href="https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:212px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="krHdzSvvW5EskC6Keg74P9" name="1700740513.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/krHdzSvvW5EskC6Keg74P9-1920-80.jpg" mos="" align="middle" fullscreen="" width="212" height="212" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ" target="_blank" rel="nofollow" data-dimension112="8f407fa0-bb39-11f1-8ef1-07da27d3dfb9" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="£19.99">G305 Lightspeed | Wireless: was £27.99 now £19.99</a></strong><br>The Logitech G305 Lightspeed is our<a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank"> favorite wireless budget mouse</a>—it's nothing fancy, but it's lightweight, has great battery life, and uses a killer sensor. The only thing to note is that this deal isn't necessarily that out of left field—the G305 hasn't been at full price for a while, but it's still worth snagging if you need a nice budget option with no frills in time for the holidays.</p><p><strong>Key specs: Wireless | 12,000 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Wireless-Lightweight-Programmable-compatible/dp/B07CGPZ3ZQ" target="_blank" rel="nofollow" data-dimension112="8f407fa0-bb39-11f1-8ef1-07da27d3dfb9" data-action="Deal Block" data-label="G305 Lightspeed | Wireless" data-dimension48="G305 Lightspeed | Wireless" data-dimension25="£19.99">View Deal</a></p></div><div class="product"><a data-dimension112="8f408004-bb39-11f1-8fae-d191715af846" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="£22.01" href="https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="SaXBHtPWoMGvzcyvsLNQQX" name="1698934268.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SaXBHtPWoMGvzcyvsLNQQX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/" target="_blank" rel="nofollow" data-dimension112="8f408004-bb39-11f1-8fae-d191715af846" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="£22.01">G502 Hero | Wired: was £37.79 now £22.01</a></strong><br>This is a tried and tested Logitech gaming mouse, with an astonishing amount of customisation potential. The G502 Hero uses the Hero 25K sensor for accuracy, 11 customisable buttons with onboard memory, and even comes with five removable weights to adjust the feel for even the pickiest of competitive gamers. The two main buttons use mechanical switch tensioning to make every click feel satisfying, and the programmable RGB lighting finishes off this comprehensive package of gaming mouse goodness.</p><p><strong>Key specs: Wired | 25,600 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Programmable-Buttons-Computer-Adjustable/dp/B07GS6ZB7T/" target="_blank" rel="nofollow" data-dimension112="8f408004-bb39-11f1-8fae-d191715af846" data-action="Deal Block" data-label="G502 Hero | Wired" data-dimension48="G502 Hero | Wired" data-dimension25="£22.01">View Deal</a></p></div><div class="product"><a data-dimension112="8f408068-bb39-11f1-a3a5-2fe33575d15c" data-action="Deal Block" data-label="Aerox 3 | Wireless" data-dimension48="Aerox 3 | Wireless" data-dimension25="£69.97" href="https://www.amazon.co.uk/SteelSeries-Aerox-Wireless-TrueMove-Optical/dp/B0GNMGXRF8/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1433px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="43md8LJJA69Nb4NXj4Aq6f" name="1790601815.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/43md8LJJA69Nb4NXj4Aq6f-1920-80.jpg" mos="" align="middle" fullscreen="" width="1433" height="1433" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/SteelSeries-Aerox-Wireless-TrueMove-Optical/dp/B0GNMGXRF8/?th=1" target="_blank" rel="nofollow" data-dimension112="8f408068-bb39-11f1-a3a5-2fe33575d15c" data-action="Deal Block" data-label="Aerox 3 | Wireless" data-dimension48="Aerox 3 | Wireless" data-dimension25="£69.97">Aerox 3 | Wireless: was £99.99 now £69.97</a></strong><br>The SteelSeries Aerox 3 might be lightweight with its honeycombed design, but it's certainly not light on features. With a 200-hour battery life, dual connectivity, and AquaBarrier protection to ensure water, dust and dirt resistance, this is a mouse designed to take some abuse and keep on trucking.</p><p><strong>Key specs: Wireless | 18,000 DPI | Right-handed</strong><a class="view-deal button" href="https://www.amazon.co.uk/SteelSeries-Aerox-Wireless-TrueMove-Optical/dp/B0GNMGXRF8/?th=1" target="_blank" rel="nofollow" data-dimension112="8f408068-bb39-11f1-a3a5-2fe33575d15c" data-action="Deal Block" data-label="Aerox 3 | Wireless" data-dimension48="Aerox 3 | Wireless" data-dimension25="£69.97">View Deal</a></p></div><div class="product"><a data-dimension112="8f4080cc-bb39-11f1-aa32-7f104278d10e" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="£79.99" href="https://www.amazon.co.uk/Logitech-Lightspeed-Left-Handed-Customisable-Switchable-Black/dp/B0DBZGCQHX/ref=sr_1_5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1206px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="8LsAaks2QtDi5D9rVtv4Yc" name="1781520515.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8LsAaks2QtDi5D9rVtv4Yc-1920-80.jpg" mos="" align="middle" fullscreen="" width="1206" height="1206" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-Lightspeed-Left-Handed-Customisable-Switchable-Black/dp/B0DBZGCQHX/ref=sr_1_5" target="_blank" rel="nofollow" data-dimension112="8f4080cc-bb39-11f1-aa32-7f104278d10e" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="£79.99">G Pro 2 Lightspeed | Wireless: was £119.99 now £79.99</a></strong><br>A great 44K DPI sensor with an ambidextrous shape, the G Pro was our first love before the Superlight showed up. It's still a wicked shape and plenty capable for gaming. This one may drop further as while it is a good price today, it has been a touch cheaper in recent months.</p><p><strong>Key specs: Ambidextrous | 44K DPI | Wireless</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-Lightspeed-Left-Handed-Customisable-Switchable-Black/dp/B0DBZGCQHX/ref=sr_1_5" target="_blank" rel="nofollow" data-dimension112="8f4080cc-bb39-11f1-aa32-7f104278d10e" data-action="Deal Block" data-label="G Pro 2 Lightspeed | Wireless" data-dimension48="G Pro 2 Lightspeed | Wireless" data-dimension25="£79.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A pro CS2 player told me he ditched his Superstrike gaming mouse for the older Superlight 2 because it was 'inconsistent' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I found yxngstxr's candidness fantastic, here, considering we were at a Logitech G Play event when he said these words to me—an event surrounding the launch of the X3 Superstrike, no less. I trusted what he was saying: he liked the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> and tried it for a while, but found it inconsistent, and had heard about it having a front-weighted balance.</p><p>The front balance is something I'd noticed, and it seems Logitech has, too, because the new X3 Superstrike has its weighting more centrally balanced—one of the biggest upgrades to the new one. It will be interesting to see whether yxngstxr switches to the X3 now.</p><p>Another CS2 pro, Oscar 'Azuwu' Bell, reminded me: "M0nesy [one of the best CS2 players], before the major, he was on the Superstrike, and for the major he went back to the Superlight."</p><p>For my part, I tend to think that shape is king and whatever fits your hand and your grip most comfortably is what will serve you better. Which is in part why I'm hoping that Logitech releases more mouse shapes with the Superstrike's HITS system in there. I did ask Logi about this—perhaps a 'Dex' shape—but the company wouldn't say yes. Perhaps notably, I didn't get a 'no', either.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/a-pro-cs2-player-told-me-he-ditched-his-superstrike-gaming-mouse-for-the-older-superlight-2-because-it-was-inconsistent/</link>
                                                                            <description>
                            <![CDATA[ That's the same loveable potato shape, though, in the Superlight. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Jz6vTyV8gs2Wbie6VghTiK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SFmte89Fciuf8gM8jaShtT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 16:30:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SFmte89Fciuf8gM8jaShtT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jacob Fox talking to CS2 pro player yxngstxr.]]></media:description>                                                            <media:text><![CDATA[Jacob Fox talking to CS2 pro player yxngstxr.]]></media:text>
                                <media:title type="plain"><![CDATA[Jacob Fox talking to CS2 pro player yxngstxr.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SFmte89Fciuf8gM8jaShtT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I found yxngstxr's candidness fantastic, here, considering we were at a Logitech G Play event when he said these words to me—an event surrounding the launch of the X3 Superstrike, no less. I trusted what he was saying: he liked the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> and tried it for a while, but found it inconsistent, and had heard about it having a front-weighted balance.</p><p>The front balance is something I'd noticed, and it seems Logitech has, too, because the new X3 Superstrike has its weighting more centrally balanced—one of the biggest upgrades to the new one. It will be interesting to see whether yxngstxr switches to the X3 now.</p><p>Another CS2 pro, Oscar 'Azuwu' Bell, reminded me: "M0nesy [one of the best CS2 players], before the major, he was on the Superstrike, and for the major he went back to the Superlight."</p><p>For my part, I tend to think that shape is king and whatever fits your hand and your grip most comfortably is what will serve you better. Which is in part why I'm hoping that Logitech releases more mouse shapes with the Superstrike's HITS system in there. I did ask Logi about this—perhaps a 'Dex' shape—but the company wouldn't say yes. Perhaps notably, I didn't get a 'no', either.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Speaking to pro Counter-Strike players convinced me to finally increase my mouse's polling rate, but not all the way to 8K ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/fip9ExnYiAkF6j2HCjiQQP.jpg" alt="Jacob Fox talking to pro CS2 player Azuwu."></p></div><div class="card__content"><h3 class="card__title">Azuwu - CS2 player for Luminosity</h3><div class="card__description-wrapper"><div class="card__description"><p>"I'd say there's a difference from 1 to 2K and then, after that, 8K you don't even reach anyway. So it's only 2K or 4K, but they're both fine. I play at 4K."</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/HyAza3HaG4qWGaWt7RLpFX.jpg" alt="Jacob Fox talking to pro CS2 player yxngstxr."></p></div><div class="card__content"><h3 class="card__title">yxngstxr - CS2 player for Luminosity</h3><div class="card__description-wrapper"><div class="card__description"><p>"1K is the minimum. If you play 4K, it's going to be way smoother—not 'way' [smoother], but you will notice it. It's a smoother motion than if you put it at 1K... I'm on 800 [DPI], 1 kHz... because usually I like to flick."</p></div></div></div></div><p>A couple of days ago I got the chance to speak with two pro Counter-Strike 2 players, <a href="https://liquipedia.net/counterstrike/AZUWU" target="_blank">Azuwu</a> and <a href="https://liquipedia.net/counterstrike/Yxngstxr" target="_blank">yxngstxr</a>, both from team <a href="https://liquipedia.net/counterstrike/Luminosity_Gaming" target="_blank">Luminosity Gaming</a>. Amongst other things, I asked them about polling rates.</p><p>As a long-time (and recently-returned) Counter-Strike player, I've stuck to 1 kHz despite all the hype over 4K and 8K. I've tried 8K for comparison before and couldn't make out much of a difference. </p><p>I've always stuck to 800 DPI and 1 kHz, just like yxngstxr, in my case mainly because it saves battery life and doesn't risk any lower performance or stuttering which is a risk with 8K on some systems. Our James recently <a href="https://www.pcgamer.com/hardware/gaming-mice/i-set-out-to-prove-polling-rate-affects-my-aim-and-instead-found-my-favourite-dpi-setting/" target="_blank">tried out different polling rates</a> and didn't find a consistent benefit, either.</p><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="mtvokeAcKVwvHLVJRz6Fk6" name="IMG_8520 (1)" alt="Jacob Fox talking to pro CS2 player yxngstxr." src="https://cdn.mos.cms.futurecdn.net/mtvokeAcKVwvHLVJRz6Fk6-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here I am, talking to yxngstxr. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But I never tried out higher polling rates for too long, and after now having heard directly from pro players that the difference is noticeable above 1K, I'm thinking I might give it another go.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X75yvW"></div>                            </div>                            <script src="https://kwizly.com/embed/X75yvW.js" async></script><p>I was a little surprised that yxngstxr sticks to 1K, but he explains that that's because he likes to do more flick-shots than perhaps most low-sens pros:</p><p>"The low-sensitivity player, because they're not moving a lot, they like the smooth feeling. If you have low-sens, you're usually not a flicky guy. That's why the low-sens players usually play like 2K, 4K, like peak Niko."</p><p>Perhaps I'll end up being the same and sticking to 1K. But given pro players are telling me they definitely can feel a difference, I think it's high time I give it some more extensive testing and hope that FaceIt rank starts to climb. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/speaking-to-pro-counter-strike-players-convinced-me-to-finally-increase-my-mouses-polling-rate-but-not-all-the-way-to-8k/</link>
                                                                            <description>
                            <![CDATA[ Maybe *this* will be what keeps me at FaceIt level 8... ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Kg9dAh8mREwj8Nr9ZWbfWe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mtvokeAcKVwvHLVJRz6Fk6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 13:57:34 +0000</pubDate>                                                                                                                                <updated>Fri, 25 Sep 2026 16:10:20 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/mtvokeAcKVwvHLVJRz6Fk6-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jacob Fox talking to pro CS2 player yxngstxr.]]></media:description>                                                            <media:text><![CDATA[Jacob Fox talking to pro CS2 player yxngstxr.]]></media:text>
                                <media:title type="plain"><![CDATA[Jacob Fox talking to pro CS2 player yxngstxr.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mtvokeAcKVwvHLVJRz6Fk6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/fip9ExnYiAkF6j2HCjiQQP.jpg" alt="Jacob Fox talking to pro CS2 player Azuwu."></p></div><div class="card__content"><h3 class="card__title">Azuwu - CS2 player for Luminosity</h3><div class="card__description-wrapper"><div class="card__description"><p>"I'd say there's a difference from 1 to 2K and then, after that, 8K you don't even reach anyway. So it's only 2K or 4K, but they're both fine. I play at 4K."</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/HyAza3HaG4qWGaWt7RLpFX.jpg" alt="Jacob Fox talking to pro CS2 player yxngstxr."></p></div><div class="card__content"><h3 class="card__title">yxngstxr - CS2 player for Luminosity</h3><div class="card__description-wrapper"><div class="card__description"><p>"1K is the minimum. If you play 4K, it's going to be way smoother—not 'way' [smoother], but you will notice it. It's a smoother motion than if you put it at 1K... I'm on 800 [DPI], 1 kHz... because usually I like to flick."</p></div></div></div></div><p>A couple of days ago I got the chance to speak with two pro Counter-Strike 2 players, <a href="https://liquipedia.net/counterstrike/AZUWU" target="_blank">Azuwu</a> and <a href="https://liquipedia.net/counterstrike/Yxngstxr" target="_blank">yxngstxr</a>, both from team <a href="https://liquipedia.net/counterstrike/Luminosity_Gaming" target="_blank">Luminosity Gaming</a>. Amongst other things, I asked them about polling rates.</p><p>As a long-time (and recently-returned) Counter-Strike player, I've stuck to 1 kHz despite all the hype over 4K and 8K. I've tried 8K for comparison before and couldn't make out much of a difference. </p><p>I've always stuck to 800 DPI and 1 kHz, just like yxngstxr, in my case mainly because it saves battery life and doesn't risk any lower performance or stuttering which is a risk with 8K on some systems. Our James recently <a href="https://www.pcgamer.com/hardware/gaming-mice/i-set-out-to-prove-polling-rate-affects-my-aim-and-instead-found-my-favourite-dpi-setting/" target="_blank">tried out different polling rates</a> and didn't find a consistent benefit, either.</p><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="mtvokeAcKVwvHLVJRz6Fk6" name="IMG_8520 (1)" alt="Jacob Fox talking to pro CS2 player yxngstxr." src="https://cdn.mos.cms.futurecdn.net/mtvokeAcKVwvHLVJRz6Fk6-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here I am, talking to yxngstxr. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But I never tried out higher polling rates for too long, and after now having heard directly from pro players that the difference is noticeable above 1K, I'm thinking I might give it another go.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X75yvW"></div>                            </div>                            <script src="https://kwizly.com/embed/X75yvW.js" async></script><p>I was a little surprised that yxngstxr sticks to 1K, but he explains that that's because he likes to do more flick-shots than perhaps most low-sens pros:</p><p>"The low-sensitivity player, because they're not moving a lot, they like the smooth feeling. If you have low-sens, you're usually not a flicky guy. That's why the low-sens players usually play like 2K, 4K, like peak Niko."</p><p>Perhaps I'll end up being the same and sticking to 1K. But given pro players are telling me they definitely can feel a difference, I think it's high time I give it some more extensive testing and hope that FaceIt rank starts to climb. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Sorry early adopters, Logitech is releasing an improved Superstrike making the original all but obsolete just months after launch ]]></title>
                                                                                                <dc:content><![CDATA[ <iframe src="https://content.jwplatform.com/players/8IyZlxCj.html" id="8IyZlxCj" title="Superstrike-x3-thoughts" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>It's fair to say I was pretty taken by the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a> when Logitech launched it earlier this year. It was the first mouse I'd seen in a long time that did something genuinely revolutionary. But, just seven months later, it is being rendered all but obsolete by the new G Pro X3 Superstrike.</p><p>The revolutionary part of the original was that it made its switches analogue and paired this with haptic feedback to replicate the feeling of a click. This allows for adjustable actuation, meaning you can set it low for less time between deciding to click and actually clicking, and the haptics make sure you feel the click exactly when you should, whenever it's set to actuate.</p><p>That being said, it's far from a perfect mouse. I was thoroughly enamoured by it during my testing, and I still think it deserves a heck of a lot of credit for that revolutionary tech alone. But over time its flaws have come to feel more pronounced to me. </p><p>It's pretty much the same as the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-2-gaming-mouse-review/" target="_blank">Superlight 2</a> in other respects, from the shape to the weight, side buttons, and scroll wheel. The side buttons are pretty mushy, the scroll wheel has problems with long-presses, and most importantly—and specifically in the case of the original Superstrike, not the Superlight 2—it's quite top-heavy thanks to those new internals.</p><p>The worst problem for a lot of people was that front-heavy weighting, as that can cause drag and, well, just not feel very smooth when picking up and moving the mouse. Given it's such an expensive mouse and is aimed squarely at competitive gamers who need great balance and weighting, and although it hasn't bothered me too much, this has been a big issue for many.</p><p>So, these seven months later, stepping up to the plate is the X3 Superstrike, which fixes this weighting issue and has a couple of other benefits, but it makes me wonder why Logitech didn't just wait and release this version in the first place. </p><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/ujV6VGYDQWJoEerDA5R2GR.jpg" alt="A top-down shot of the Logitech G Pro X2 Superstrike on a desk."></p></div><div class="card__content"><h3 class="card__title">X2 Superstrike</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Sensor:</strong> Hero 2, 44K DPI<br><strong>Battery life: </strong>90 hours<br><strong>Weight: </strong>59 g<br><strong>Colours: </strong>White with black buttons<br><strong>Price: </strong>$180</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV.jpg" alt="A top-down shot of the Logitech G Pro X3 Superstrike on a desk."></p></div><div class="card__content"><h3 class="card__title">X3 Superstrike</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Sensor: </strong>Hero 2, 48K DPI<br><strong>Battery life: </strong>135 hours<br><strong>Weight: </strong>57 g (59 g in Europe)<br><strong>Colours:</strong> Midnight Black or Magenta Eclipse (pink and black)<br><strong>Price: </strong>$200 </p></div></div></div></div><p>It's basically the same weight, with a couple of grams shaved off only if you're outside of Europe, but battery life has been improved by 50% up to 135 hours at 1 kHz polling, assuming you're clicking just shy of once per second. It's also got a slightly upgraded sensor, with a bump to DPI, acceleration, and max speed—but nothing major.</p><p>In terms of what it actually feels like to use, it feels almost exactly the same as the original X2 Superstrike—except the weighting is more balanced. I've been using it for the past few days and most of the time I forget I'm not just using the X2 Superstrike. Occasionally I'm reminded of the better balance, but apart from that both feel about the same to use, whether for work or gaming. </p><p>You do get different colour choices with the X3, though: Midnight Black or Magenta Eclipse (pink and black). I'm not sure why the original white-and-black combo isn't available for the X3, but the black version I have under my palm looks good enough to me.</p><p>In other words, just seven months after the X2's launch, the X3 launches—for an extra $20 at $200/€190, mind you—and very much feels like the X2, but improved in a couple of simple ways. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789651424869-p2vqt6atc *, #fv-chart-1789651424869-p2vqt6atc *:before, #fv-chart-1789651424869-p2vqt6atc *:after, #fv-chart-1789651424869-p2vqt6atc-slideshow *, #fv-chart-1789651424869-p2vqt6atc-slideshow *:before, #fv-chart-1789651424869-p2vqt6atc-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789651424869-p2vqt6atc, #fv-chart-1789651424869-p2vqt6atc-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789651424869-p2vqt6atc {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789651424869-p2vqt6atc.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-1789651424869-p2vqt6atc .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789651424869-p2vqt6atc-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1789651424869-p2vqt6atc-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc-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; }}#fv-chart-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789651424869-p2vqt6atc-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-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;}#fv-chart-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789651424869-p2vqt6atc.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-expand-btn, #fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-expand-btn:hover, #fv-chart-1789651424869-p2vqt6atc .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789651424869-p2vqt6atc .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789651424869-p2vqt6atc .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-row, #fv-chart-1789651424869-p2vqt6atc .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789651424869-p2vqt6atc.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789651424869-p2vqt6atc.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789651424869-p2vqt6atc.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789651424869-p2vqt6atc .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789651424869-p2vqt6atc .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789651424869-p2vqt6atc .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789651424869-p2vqt6atc .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789651424869-p2vqt6atc .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789651424869-p2vqt6atc .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-pie-container,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stacked-product,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-grouped-bar-product,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stacked-product,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789651424869-p2vqt6atc.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-1789651424869-p2vqt6atc.mobile-view .fv-bar-label,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-grouped-product-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-label,#fv-chart-1789651424869-p2vqt6atc.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-1789651424869-p2vqt6atc.mobile-view .fv-bar-container,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-cluster,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-container,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-x-axis-wrapper,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-x-axis-label-space,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-x-axis-chart-space,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-benchmark-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-dropdown-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-carousel-nav-btn,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-chart-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-chart-subhead,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-header,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-wrapper,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-vs,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-container,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789651424869-p2vqt6atc.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789651424869-p2vqt6atc .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789651424869-p2vqt6atc .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-bar-row,#fv-chart-1789651424869-p2vqt6atc .fv-stacked-product,#fv-chart-1789651424869-p2vqt6atc .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-label,#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-container,#fv-chart-1789651424869-p2vqt6atc .fv-bar-cluster {width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789651424869-p2vqt6atc .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-label-space {display: none !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-logo,#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789651424869-p2vqt6atc.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": "X2 Superstrike vs X3 Superstrike","description": "The X2 Superstrike is on the left, the X3 Superstrike on the right.","creator": {"@type": "Organization","name": "PC Gamer","logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T13:23:44.869Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789651424869-p2vqt6atc" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">X2 Superstrike vs X3 Superstrike</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789651424869-p2vqt6atc-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="The X2 Superstrike is on the left, the X3 Superstrike on the right." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ujV6VGYDQWJoEerDA5R2GR.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ujV6VGYDQWJoEerDA5R2GR.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">X2 Superstrike</div><div class="fv-image-compare-label fv-image-compare-label-right">X3 Superstrike</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789651424869-p2vqt6atc', false); });} else {initialize('fv-chart-1789651424869-p2vqt6atc', false);}})();</script></div><p>It's the time frame that makes this a little difficult to swallow, because Logitech must surely have known back in February that a new version was on the cards before very long. Which, if so, means it was hyping up and selling a very expensive mouse it knew would very soon be superseded by a slightly more expensive one that essentially matches it but eliminates a couple of pain points.</p><p>Don't get me wrong, it is a better mouse. It just feels like Logitech could have waited a few months and delivered a much more well-rounded product.</p><p>That being said, I'm aware that Logitech wanted the Superstrike and its tech out on the market ASAP. Its engineers told me as much when I <a href="https://www.pcgamer.com/hardware/gaming-mice/we-knew-we-had-a-golden-nugget-in-our-hands-so-we-took-all-the-shortcuts-we-could-logitechs-new-wonder-mouse-looks-very-similar-to-the-superlight-2-for-good-reason/" target="_blank">spoke to them back in February</a></p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/NxJZKaulOto" allowfullscreen></iframe></div></div><p>Logitech G's Head of Engineering Regis Croisonnier told me:</p><p>"Usually when you start to talk about the technology or prototype, between the time we have the prototype and the time we implement it in a product, I would say the average time is between two to three years. Here, we knew we had a golden nugget in our hands, right? We wanted to move fast, so we took all the shortcuts we could."</p><p>So, Logitech probably thought it was important to get the tech in the Superstrike out as fast as possible, even if it could make a more well-rounded product just a few months later. But it still leaves a bit of a bitter taste in my mouth, because what about all the people who bought the X2 Superstrike and might now be kicking themselves that they didn't wait just a while longer?</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XGWp97CQYuQvUQ6nGZTo9J-1920-80.jpg" alt="A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XciHKQEbtxrsFG4e7QjEBJ-1920-80.jpg" alt="A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV-1920-80.jpg" alt="A top-down shot of the Logitech G Pro X3 Superstrike on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Logitech has been keen to express that the tech is bleeding-edge, so anyone buying the X2 must have had at least some inkling that they were paying a fee for tech which might become cheaper or be put into different mice before long—we're already seeing <a href="https://www.pcgamer.com/hardware/gaming-mice/finalmouse-claims-its-mouse-has-the-absolute-fastest-click-quicker-than-the-logitech-superstrike-and-razer-viper-v4-pro/" target="_blank">some from niche brands</a>, and the Chinese market is never too far behind cloning popular mice. But that doesn't mean they were to know that there'd be essentially an 'X2 Superstrike but more finished' just seven months later.</p><p>It's difficult to say where the line would be, however, that would make the X3 Superstrike easier to swallow. If it had been a year, or a year and a half later, would that have felt better? For my palate, I think so. Which, again, isn't to say Logitech should have <em>delayed </em>the X3, but perhaps it could have not released the X2 and waited until it was in X3-like shape.</p><p>To be extra charitable, perhaps Logi wasn't sure whether other big brands might beat them to the punch with analogue tech if they left it. No other big brand has launched anything similar yet, but <a href="https://www.pcgamer.com/hardware/gaming-mice/keychrons-on-the-fly-optical-hall-effect-mouse-switch-is-taking-on-logitech-over-one-of-the-few-things-people-didnt-like-about-the-superstrike/" target="_blank">Keychron could have beaten Logitech to the punch</a> in being the first to announce such analogue mouse switch technology, which I suppose would have stopped Logitech from being able to say it came up with the idea first.</p><p>Whatever the reasons and however much sense they made to Logitech, it doesn't quite get this taste out of my mouth.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/sorry-early-adopters-logitech-is-releasing-an-improved-superstrike-making-the-original-all-but-obsolete-just-months-after-launch/</link>
                                                                            <description>
                            <![CDATA[ While the new one is a great mouse, it's what the first should have been. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SduR2UcCFBoGm5ZyihhGiV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FVTRrBNCxLzTZ9ue6qC2AJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 16:01:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FVTRrBNCxLzTZ9ue6qC2AJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk.]]></media:description>                                                            <media:text><![CDATA[A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk.]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FVTRrBNCxLzTZ9ue6qC2AJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <iframe src="https://content.jwplatform.com/players/8IyZlxCj.html" id="8IyZlxCj" title="Superstrike-x3-thoughts" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>It's fair to say I was pretty taken by the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a> when Logitech launched it earlier this year. It was the first mouse I'd seen in a long time that did something genuinely revolutionary. But, just seven months later, it is being rendered all but obsolete by the new G Pro X3 Superstrike.</p><p>The revolutionary part of the original was that it made its switches analogue and paired this with haptic feedback to replicate the feeling of a click. This allows for adjustable actuation, meaning you can set it low for less time between deciding to click and actually clicking, and the haptics make sure you feel the click exactly when you should, whenever it's set to actuate.</p><p>That being said, it's far from a perfect mouse. I was thoroughly enamoured by it during my testing, and I still think it deserves a heck of a lot of credit for that revolutionary tech alone. But over time its flaws have come to feel more pronounced to me. </p><p>It's pretty much the same as the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-2-gaming-mouse-review/" target="_blank">Superlight 2</a> in other respects, from the shape to the weight, side buttons, and scroll wheel. The side buttons are pretty mushy, the scroll wheel has problems with long-presses, and most importantly—and specifically in the case of the original Superstrike, not the Superlight 2—it's quite top-heavy thanks to those new internals.</p><p>The worst problem for a lot of people was that front-heavy weighting, as that can cause drag and, well, just not feel very smooth when picking up and moving the mouse. Given it's such an expensive mouse and is aimed squarely at competitive gamers who need great balance and weighting, and although it hasn't bothered me too much, this has been a big issue for many.</p><p>So, these seven months later, stepping up to the plate is the X3 Superstrike, which fixes this weighting issue and has a couple of other benefits, but it makes me wonder why Logitech didn't just wait and release this version in the first place. </p><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/ujV6VGYDQWJoEerDA5R2GR.jpg" alt="A top-down shot of the Logitech G Pro X2 Superstrike on a desk."></p></div><div class="card__content"><h3 class="card__title">X2 Superstrike</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Sensor:</strong> Hero 2, 44K DPI<br><strong>Battery life: </strong>90 hours<br><strong>Weight: </strong>59 g<br><strong>Colours: </strong>White with black buttons<br><strong>Price: </strong>$180</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV.jpg" alt="A top-down shot of the Logitech G Pro X3 Superstrike on a desk."></p></div><div class="card__content"><h3 class="card__title">X3 Superstrike</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Sensor: </strong>Hero 2, 48K DPI<br><strong>Battery life: </strong>135 hours<br><strong>Weight: </strong>57 g (59 g in Europe)<br><strong>Colours:</strong> Midnight Black or Magenta Eclipse (pink and black)<br><strong>Price: </strong>$200 </p></div></div></div></div><p>It's basically the same weight, with a couple of grams shaved off only if you're outside of Europe, but battery life has been improved by 50% up to 135 hours at 1 kHz polling, assuming you're clicking just shy of once per second. It's also got a slightly upgraded sensor, with a bump to DPI, acceleration, and max speed—but nothing major.</p><p>In terms of what it actually feels like to use, it feels almost exactly the same as the original X2 Superstrike—except the weighting is more balanced. I've been using it for the past few days and most of the time I forget I'm not just using the X2 Superstrike. Occasionally I'm reminded of the better balance, but apart from that both feel about the same to use, whether for work or gaming. </p><p>You do get different colour choices with the X3, though: Midnight Black or Magenta Eclipse (pink and black). I'm not sure why the original white-and-black combo isn't available for the X3, but the black version I have under my palm looks good enough to me.</p><p>In other words, just seven months after the X2's launch, the X3 launches—for an extra $20 at $200/€190, mind you—and very much feels like the X2, but improved in a couple of simple ways. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789651424869-p2vqt6atc *, #fv-chart-1789651424869-p2vqt6atc *:before, #fv-chart-1789651424869-p2vqt6atc *:after, #fv-chart-1789651424869-p2vqt6atc-slideshow *, #fv-chart-1789651424869-p2vqt6atc-slideshow *:before, #fv-chart-1789651424869-p2vqt6atc-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789651424869-p2vqt6atc, #fv-chart-1789651424869-p2vqt6atc-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789651424869-p2vqt6atc {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789651424869-p2vqt6atc.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-1789651424869-p2vqt6atc .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789651424869-p2vqt6atc-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1789651424869-p2vqt6atc-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc-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; }}#fv-chart-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789651424869-p2vqt6atc-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-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;}#fv-chart-1789651424869-p2vqt6atc-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-1789651424869-p2vqt6atc-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789651424869-p2vqt6atc .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789651424869-p2vqt6atc.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-expand-btn, #fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-expand-btn:hover, #fv-chart-1789651424869-p2vqt6atc .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789651424869-p2vqt6atc .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789651424869-p2vqt6atc .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789651424869-p2vqt6atc .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-row, #fv-chart-1789651424869-p2vqt6atc .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789651424869-p2vqt6atc.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789651424869-p2vqt6atc.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789651424869-p2vqt6atc.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789651424869-p2vqt6atc .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789651424869-p2vqt6atc .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789651424869-p2vqt6atc .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789651424869-p2vqt6atc .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789651424869-p2vqt6atc .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789651424869-p2vqt6atc .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-pie-container,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stacked-product,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-grouped-bar-product,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stacked-product,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789651424869-p2vqt6atc.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-1789651424869-p2vqt6atc.mobile-view .fv-bar-label,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-grouped-product-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-label,#fv-chart-1789651424869-p2vqt6atc.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-1789651424869-p2vqt6atc.mobile-view .fv-bar-container,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-cluster,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-container,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-x-axis-wrapper,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-x-axis-label-space,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-x-axis-chart-space,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-benchmark-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-dropdown-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-carousel-nav-btn,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-chart-title,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-chart-subhead,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-header,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-wrapper,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-vs,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select-container,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-versus-select,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789651424869-p2vqt6atc.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789651424869-p2vqt6atc .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789651424869-p2vqt6atc .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-bar-row,#fv-chart-1789651424869-p2vqt6atc .fv-stacked-product,#fv-chart-1789651424869-p2vqt6atc .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-label,#fv-chart-1789651424869-p2vqt6atc .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-1789651424869-p2vqt6atc .fv-bar-container,#fv-chart-1789651424869-p2vqt6atc .fv-bar-cluster {width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789651424869-p2vqt6atc .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789651424869-p2vqt6atc .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-label-space {display: none !important;}#fv-chart-1789651424869-p2vqt6atc .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-logo,#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789651424869-p2vqt6atc .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789651424869-p2vqt6atc .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789651424869-p2vqt6atc .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789651424869-p2vqt6atc.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": "X2 Superstrike vs X3 Superstrike","description": "The X2 Superstrike is on the left, the X3 Superstrike on the right.","creator": {"@type": "Organization","name": "PC Gamer","logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T13:23:44.869Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789651424869-p2vqt6atc" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">X2 Superstrike vs X3 Superstrike</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789651424869-p2vqt6atc-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="The X2 Superstrike is on the left, the X3 Superstrike on the right." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ujV6VGYDQWJoEerDA5R2GR.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ujV6VGYDQWJoEerDA5R2GR.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">X2 Superstrike</div><div class="fv-image-compare-label fv-image-compare-label-right">X3 Superstrike</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789651424869-p2vqt6atc', false); });} else {initialize('fv-chart-1789651424869-p2vqt6atc', false);}})();</script></div><p>It's the time frame that makes this a little difficult to swallow, because Logitech must surely have known back in February that a new version was on the cards before very long. Which, if so, means it was hyping up and selling a very expensive mouse it knew would very soon be superseded by a slightly more expensive one that essentially matches it but eliminates a couple of pain points.</p><p>Don't get me wrong, it is a better mouse. It just feels like Logitech could have waited a few months and delivered a much more well-rounded product.</p><p>That being said, I'm aware that Logitech wanted the Superstrike and its tech out on the market ASAP. Its engineers told me as much when I <a href="https://www.pcgamer.com/hardware/gaming-mice/we-knew-we-had-a-golden-nugget-in-our-hands-so-we-took-all-the-shortcuts-we-could-logitechs-new-wonder-mouse-looks-very-similar-to-the-superlight-2-for-good-reason/" target="_blank">spoke to them back in February</a></p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/NxJZKaulOto" allowfullscreen></iframe></div></div><p>Logitech G's Head of Engineering Regis Croisonnier told me:</p><p>"Usually when you start to talk about the technology or prototype, between the time we have the prototype and the time we implement it in a product, I would say the average time is between two to three years. Here, we knew we had a golden nugget in our hands, right? We wanted to move fast, so we took all the shortcuts we could."</p><p>So, Logitech probably thought it was important to get the tech in the Superstrike out as fast as possible, even if it could make a more well-rounded product just a few months later. But it still leaves a bit of a bitter taste in my mouth, because what about all the people who bought the X2 Superstrike and might now be kicking themselves that they didn't wait just a while longer?</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XGWp97CQYuQvUQ6nGZTo9J-1920-80.jpg" alt="A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XciHKQEbtxrsFG4e7QjEBJ-1920-80.jpg" alt="A Logitech G Pro X3 Superstrike gaming mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PMuP79Zyz7Fc9uPxDXs7rV-1920-80.jpg" alt="A top-down shot of the Logitech G Pro X3 Superstrike on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Logitech has been keen to express that the tech is bleeding-edge, so anyone buying the X2 must have had at least some inkling that they were paying a fee for tech which might become cheaper or be put into different mice before long—we're already seeing <a href="https://www.pcgamer.com/hardware/gaming-mice/finalmouse-claims-its-mouse-has-the-absolute-fastest-click-quicker-than-the-logitech-superstrike-and-razer-viper-v4-pro/" target="_blank">some from niche brands</a>, and the Chinese market is never too far behind cloning popular mice. But that doesn't mean they were to know that there'd be essentially an 'X2 Superstrike but more finished' just seven months later.</p><p>It's difficult to say where the line would be, however, that would make the X3 Superstrike easier to swallow. If it had been a year, or a year and a half later, would that have felt better? For my palate, I think so. Which, again, isn't to say Logitech should have <em>delayed </em>the X3, but perhaps it could have not released the X2 and waited until it was in X3-like shape.</p><p>To be extra charitable, perhaps Logi wasn't sure whether other big brands might beat them to the punch with analogue tech if they left it. No other big brand has launched anything similar yet, but <a href="https://www.pcgamer.com/hardware/gaming-mice/keychrons-on-the-fly-optical-hall-effect-mouse-switch-is-taking-on-logitech-over-one-of-the-few-things-people-didnt-like-about-the-superstrike/" target="_blank">Keychron could have beaten Logitech to the punch</a> in being the first to announce such analogue mouse switch technology, which I suppose would have stopped Logitech from being able to say it came up with the idea first.</p><p>Whatever the reasons and however much sense they made to Logitech, it doesn't quite get this taste out of my mouth.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I don't care what you lot say, the side buttons on a mouse are for copy and paste (on desktop) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The PC Gamer hardware team got into a disagreement last week. We were sat around in the office chatting about Razer's new MMO gaming mouse and how we wouldn't know what to do with all its buttons (it has 12). That got us onto the topic of what we do with the two side buttons more commonly found across gaming mice. </p><p>Turns out, the team I've worked with for years, who I thought I could trust, who I've shared a laugh with, who I thought were my friends, are complete and utter fools. As are most of you—soz.</p><p>They reckon the best use of the two side buttons are forwards and back, ie. for browsing the web. That tends to be the default assignment for gaming mice out of the box, which goes to show the lack of ingenuity on their part. </p><p>We asked you lot what you thought about this very important question in the form of a poll. It read: </p><p>"Jacob wants to know if there are people like him, so do you have your mouse side button set to forward/back or copy/paste?"</p><p>The results are pretty surprising. Not for the overwhelming majority of you that use these buttons for forward and back (1,343), but the near two hundred kindred spirits—fellow travellers—that are with me on the whole copy and paste thing.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790174068854-gnr6ge9rr *, #fv-chart-1790174068854-gnr6ge9rr *:before, #fv-chart-1790174068854-gnr6ge9rr *:after, #fv-chart-1790174068854-gnr6ge9rr-slideshow *, #fv-chart-1790174068854-gnr6ge9rr-slideshow *:before, #fv-chart-1790174068854-gnr6ge9rr-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790174068854-gnr6ge9rr, #fv-chart-1790174068854-gnr6ge9rr-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790174068854-gnr6ge9rr {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790174068854-gnr6ge9rr.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-1790174068854-gnr6ge9rr .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790174068854-gnr6ge9rr-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1790174068854-gnr6ge9rr-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr-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; }}#fv-chart-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790174068854-gnr6ge9rr-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-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;}#fv-chart-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-row, #fv-chart-1790174068854-gnr6ge9rr .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790174068854-gnr6ge9rr.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790174068854-gnr6ge9rr.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790174068854-gnr6ge9rr.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790174068854-gnr6ge9rr .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-pie-container,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stacked-product,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-grouped-bar-product,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stacked-product,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790174068854-gnr6ge9rr.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-1790174068854-gnr6ge9rr.mobile-view .fv-bar-label,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-grouped-product-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-label,#fv-chart-1790174068854-gnr6ge9rr.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-1790174068854-gnr6ge9rr.mobile-view .fv-bar-container,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-cluster,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-container,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-x-axis-wrapper,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-x-axis-label-space,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-x-axis-chart-space,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-benchmark-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-dropdown-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-carousel-nav-btn,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-chart-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-chart-subhead,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-header,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-wrapper,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-vs,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-container,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790174068854-gnr6ge9rr.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790174068854-gnr6ge9rr .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row,#fv-chart-1790174068854-gnr6ge9rr .fv-stacked-product,#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-label,#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-container,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-cluster {width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-label-space {display: none !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-logo,#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790174068854-gnr6ge9rr.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": "Do you have your mouse side button set to forward/back or copy/paste?","description": "Turns out that so so so many of you are just wrong","creator": {"@type": "Organization","name": "PC Gamer","logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-23T14:34:28.855Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["CTRL+C / CTRL+V","Forward/Back","Something else entirely","Votes (%)","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "CTRL+C / CTRL+V – Votes (%)","value": 10,"unitText": "Percentage"},{"@type": "PropertyValue","name": "Forward/Back – Votes (%)","value": 67,"unitText": "Percentage"},{"@type": "PropertyValue","name": "Something else entirely – Votes (%)","value": 23,"unitText": "Percentage"}]}</script><div id="fv-chart-1790174068854-gnr6ge9rr" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Do you have your mouse side button set to forward/back or copy/paste?</h3><p class="fv-chart-subhead">Turns out that so so so many of you are just wrong</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790174068854-gnr6ge9rr-bar-Votes (%)" data-chart-type="Bar" data-title="Votes (%)" data-subhead="Turns out that so so so many of you are just wrong" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Votes (%)</h4><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">CTRL+C / CTRL+V</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 12.5%; background-color: #E33235;" data-target-width="12.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">10</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Forward/Back</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 83.75%; background-color: #FE9F58;" data-target-width="83.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">67</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Something else entirely</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 28.749999999999996%; background-color: #1CA9C4;" data-target-width="28.749999999999996" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">23</span></div></div></div></div><table class="sr-only"><caption>Votes (%) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>CTRL+C / CTRL+V</td><td>10</td></tr><tr><td>Forward/Back</td><td>67</td></tr><tr><td>Something else entirely</td><td>23</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790174068854-gnr6ge9rr', false); });} else {initialize('fv-chart-1790174068854-gnr6ge9rr', false);}})();</script></div><p>Hear me out: it makes it easy to copy from one place to another without ever reaching for your keyboard. I'd actually argue that's more ergonomic. Not in a medical or legal sense, but a moral one.  Whereas you can already go forward and back on a browser with just your mouse. Why are you in such a rush between webpages anyways? <em>What are you hiding?</em></p><p>Over 400 of you responded with 'something else entirely', which I'd chalk up to various game- or genre-specific macros. I'm with you on that. I map these buttons to  'C' and 'V' while I'm playing an FPS—I haven't completely lost the plot.</p><p>Anyways, is now a good time to say I also rest my middle on the scroll wheel at all times and use my ring finger for right click? Ah, probably not.</p><p>For our current week-long poll, we want to know about something far less contentious: How much RGB festoons your gaming PC?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/i-dont-care-what-you-lot-say-the-side-buttons-on-a-mouse-are-for-copy-and-paste-on-desktop/</link>
                                                                            <description>
                            <![CDATA[ There are dozens of us! Dozens! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">C2Wnna4ZLC5V5LhtKdSepg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xfdLubmrJuD8fZasUcHCdN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 14:39:28 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xfdLubmrJuD8fZasUcHCdN-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Razer Viper V4 Pro with a hand on the buttons.]]></media:description>                                                            <media:text><![CDATA[A Razer Viper V4 Pro with a hand on the buttons.]]></media:text>
                                <media:title type="plain"><![CDATA[A Razer Viper V4 Pro with a hand on the buttons.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xfdLubmrJuD8fZasUcHCdN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The PC Gamer hardware team got into a disagreement last week. We were sat around in the office chatting about Razer's new MMO gaming mouse and how we wouldn't know what to do with all its buttons (it has 12). That got us onto the topic of what we do with the two side buttons more commonly found across gaming mice. </p><p>Turns out, the team I've worked with for years, who I thought I could trust, who I've shared a laugh with, who I thought were my friends, are complete and utter fools. As are most of you—soz.</p><p>They reckon the best use of the two side buttons are forwards and back, ie. for browsing the web. That tends to be the default assignment for gaming mice out of the box, which goes to show the lack of ingenuity on their part. </p><p>We asked you lot what you thought about this very important question in the form of a poll. It read: </p><p>"Jacob wants to know if there are people like him, so do you have your mouse side button set to forward/back or copy/paste?"</p><p>The results are pretty surprising. Not for the overwhelming majority of you that use these buttons for forward and back (1,343), but the near two hundred kindred spirits—fellow travellers—that are with me on the whole copy and paste thing.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790174068854-gnr6ge9rr *, #fv-chart-1790174068854-gnr6ge9rr *:before, #fv-chart-1790174068854-gnr6ge9rr *:after, #fv-chart-1790174068854-gnr6ge9rr-slideshow *, #fv-chart-1790174068854-gnr6ge9rr-slideshow *:before, #fv-chart-1790174068854-gnr6ge9rr-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790174068854-gnr6ge9rr, #fv-chart-1790174068854-gnr6ge9rr-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790174068854-gnr6ge9rr {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790174068854-gnr6ge9rr.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-1790174068854-gnr6ge9rr .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790174068854-gnr6ge9rr-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1790174068854-gnr6ge9rr-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr-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; }}#fv-chart-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790174068854-gnr6ge9rr-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-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;}#fv-chart-1790174068854-gnr6ge9rr-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-1790174068854-gnr6ge9rr-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790174068854-gnr6ge9rr .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-row, #fv-chart-1790174068854-gnr6ge9rr .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790174068854-gnr6ge9rr.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790174068854-gnr6ge9rr.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790174068854-gnr6ge9rr.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790174068854-gnr6ge9rr .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-pie-container,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stacked-product,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-grouped-bar-product,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stacked-product,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790174068854-gnr6ge9rr.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-1790174068854-gnr6ge9rr.mobile-view .fv-bar-label,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-grouped-product-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-label,#fv-chart-1790174068854-gnr6ge9rr.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-1790174068854-gnr6ge9rr.mobile-view .fv-bar-container,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-cluster,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-container,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-x-axis-wrapper,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-x-axis-label-space,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-x-axis-chart-space,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-benchmark-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-dropdown-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-carousel-nav-btn,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-chart-title,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-chart-subhead,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-header,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-wrapper,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-vs,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select-container,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-versus-select,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790174068854-gnr6ge9rr.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790174068854-gnr6ge9rr .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row,#fv-chart-1790174068854-gnr6ge9rr .fv-stacked-product,#fv-chart-1790174068854-gnr6ge9rr .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-label,#fv-chart-1790174068854-gnr6ge9rr .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-1790174068854-gnr6ge9rr .fv-bar-container,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-cluster {width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790174068854-gnr6ge9rr .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-label-space {display: none !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-logo,#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790174068854-gnr6ge9rr .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790174068854-gnr6ge9rr.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": "Do you have your mouse side button set to forward/back or copy/paste?","description": "Turns out that so so so many of you are just wrong","creator": {"@type": "Organization","name": "PC Gamer","logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-23T14:34:28.855Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["CTRL+C / CTRL+V","Forward/Back","Something else entirely","Votes (%)","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "CTRL+C / CTRL+V – Votes (%)","value": 10,"unitText": "Percentage"},{"@type": "PropertyValue","name": "Forward/Back – Votes (%)","value": 67,"unitText": "Percentage"},{"@type": "PropertyValue","name": "Something else entirely – Votes (%)","value": 23,"unitText": "Percentage"}]}</script><div id="fv-chart-1790174068854-gnr6ge9rr" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Do you have your mouse side button set to forward/back or copy/paste?</h3><p class="fv-chart-subhead">Turns out that so so so many of you are just wrong</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790174068854-gnr6ge9rr-bar-Votes (%)" data-chart-type="Bar" data-title="Votes (%)" data-subhead="Turns out that so so so many of you are just wrong" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Votes (%)</h4><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">CTRL+C / CTRL+V</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 12.5%; background-color: #E33235;" data-target-width="12.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">10</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Forward/Back</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 83.75%; background-color: #FE9F58;" data-target-width="83.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">67</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Something else entirely</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 28.749999999999996%; background-color: #1CA9C4;" data-target-width="28.749999999999996" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">23</span></div></div></div></div><table class="sr-only"><caption>Votes (%) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>CTRL+C / CTRL+V</td><td>10</td></tr><tr><td>Forward/Back</td><td>67</td></tr><tr><td>Something else entirely</td><td>23</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790174068854-gnr6ge9rr', false); });} else {initialize('fv-chart-1790174068854-gnr6ge9rr', false);}})();</script></div><p>Hear me out: it makes it easy to copy from one place to another without ever reaching for your keyboard. I'd actually argue that's more ergonomic. Not in a medical or legal sense, but a moral one.  Whereas you can already go forward and back on a browser with just your mouse. Why are you in such a rush between webpages anyways? <em>What are you hiding?</em></p><p>Over 400 of you responded with 'something else entirely', which I'd chalk up to various game- or genre-specific macros. I'm with you on that. I map these buttons to  'C' and 'V' while I'm playing an FPS—I haven't completely lost the plot.</p><p>Anyways, is now a good time to say I also rest my middle on the scroll wheel at all times and use my ring finger for right click? Ah, probably not.</p><p>For our current week-long poll, we want to know about something far less contentious: How much RGB festoons your gaming PC?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I set out to prove polling rate affects my aim and instead found my favourite DPI setting ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'm a thoroughly average gamer. And in first-person shooters, I reckon I am ever so slightly above average at aiming—If aim-tester software, Aimlabs, is anything to go by, at least (top 38%, baby). But as a hardware tester, I have access to all kinds of gaming gear, and that includes competitive-level specs. </p><p>I wanted to see if the average gamer would benefit from a better polling rate and, as the average gamer, I thought I was the perfect guinea pig. So, grabbing my <a href="https://www.pcgamer.com/hardware/gaming-mice/asus-rog-harpe-ii-extreme-edition-20-review/" target="_blank">Asus Rog Harpe II Extreme Edition 20</a>, a mouse with a max DPI of 65,000 and a max polling rate of 8,000 Hz, I went through the training software at different polling rates multiple times to see if it would improve my aim. </p><p>If you are unaware of what exactly a polling rate is, it is the rate at which your gaming mouse communicates with your rig. A 125 Hz polling rate gives feedback to your PC every 8 milliseconds, whereas 8,000 Hz gives feedback every 0.125 milliseconds. Generally speaking, the advice for most gamers is to linger at around 1,000 Hz, as responding every millisecond is plenty fast but not so fast that it drains the battery life of your squeaker. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script><p>Aimlabs is a free bit of software that tests your shooting across a series of firing ranges. It then ranks your accuracy and speed before putting it all together for a final score. A flat score of 50,000 tends to put you just around the middle of the pack worldwide. Considering this sample set consists of people who specifically seek out software to get better at shooting, I'd imagine the top 50% of Aimlabs is better at aiming than the top 50% of gamers overall. </p><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="5Z5HG6hDyVtLXotzVznxzd" name="C (52)" alt="Asus ROG Harpe II Extreme Edition 20 in a hand, from the back" src="https://cdn.mos.cms.futurecdn.net/5Z5HG6hDyVtLXotzVznxzd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The mouse I used.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>First, my methodology. I booted up the Aimlabs software and picked Gridshot (Ultimate), a firing range where blue orbs pop up on screen, and you have to fire at them with a pistol. You have unlimited ammo, so you don't have to concern yourself with conserving it, and you don't need to move, either. Through minor adjustments and flicks, you simply have to hit the bubbles as quickly as you can whilst receiving score penalties for missing. That means it's a test of both accuracy and speed. I went through the map at every polling rate once or twice (between seven and fourteen runs), before doing a final run, and those scores are the ones you see below.</p><p>After those warm-up rounds, I decided my first test would be on 1600 DPI, which is what feels most natural for me. You can see my results below</p><div ><table><caption>1600 DPI results</caption><tbody><tr><td class="firstcol " ><p><strong>125 Hz</strong></p></td><td  ><p>58,612</p></td></tr><tr><td class="firstcol " ><p><strong>250 Hz</strong></p></td><td  ><p>51,065</p></td></tr><tr><td class="firstcol " ><p><strong>500 Hz</strong></p></td><td  ><p>57,027</p></td></tr><tr><td class="firstcol " ><p><strong>1,000 Hz</strong></p></td><td  ><p>57,232</p></td></tr><tr><td class="firstcol " ><p><strong>2,000 Hz</strong></p></td><td  ><p>53,244</p></td></tr><tr><td class="firstcol " ><p><strong>4,000 Hz</strong></p></td><td  ><p>52,215</p></td></tr><tr><td class="firstcol " ><p><strong>8,000 Hz</strong></p></td><td  ><p>58,441</p></td></tr></tbody></table></div><p>Uhhh yeah, that is all over the place. But I can say it felt most comfortable at 1,000 Hz, mostly because I aim based on feel. I don't usually pay all that much attention to the cursor as it moves. As such, I would say 125 Hz feels awkward but played fine, and 2,000 Hz is where I stop noticing much of a difference. </p><p>4000 DPI felt significantly worse, but it was where I noticed the polling rate making the biggest difference. I consistently lost track of the cursor at 125 Hz thanks to the speed of the mouse, but could fairly confidently read the position of the mouse at 8,000 Hz. You can see my results for that below</p><div ><table><caption>4000 DPI results</caption><tbody><tr><td class="firstcol " ><p><strong>125 Hz</strong></p></td><td  ><p>37,885</p></td></tr><tr><td class="firstcol " ><p><strong>250 Hz</strong></p></td><td  ><p>41,183</p></td></tr><tr><td class="firstcol " ><p><strong>500 Hz</strong></p></td><td  ><p>43689</p></td></tr><tr><td class="firstcol " ><p><strong>1,000 Hz</strong></p></td><td  ><p>48341</p></td></tr><tr><td class="firstcol " ><p><strong>2,000 Hz</strong></p></td><td  ><p>46242</p></td></tr><tr><td class="firstcol " ><p><strong>4,000 Hz</strong></p></td><td  ><p>50,053</p></td></tr><tr><td class="firstcol " ><p><strong>8,000 Hz</strong></p></td><td  ><p>49,952</p></td></tr></tbody></table></div><p>As you can see, the lower polling rate equates to lower scores at 4,000 DPI, but it varies a good bit past 1,000 Hz. My best score is at 4,000 Hz, but 8,000 Hz and 1000 Hz are close enough in score for me to say I don't think I'm better at significantly higher polling rates. I did feel the difference all the way up to 4,000 Hz, though. </p><p>However, many pro players use a low DPI, ranging from 600 to 800 DPI, so I thought I'd test that and got by far my best scores</p><div ><table><caption>800 DPI results</caption><tbody><tr><td class="firstcol " ><p><strong>125 Hz</strong></p></td><td  ><p>57874</p></td></tr><tr><td class="firstcol " ><p><strong>250 Hz</strong></p></td><td  ><p>58,879</p></td></tr><tr><td class="firstcol " ><p><strong>500 Hz</strong></p></td><td  ><p>59,866</p></td></tr><tr><td class="firstcol " ><p><strong>1,000 Hz</strong></p></td><td  ><p>60,256</p></td></tr><tr><td class="firstcol " ><p><strong>2,000 Hz</strong></p></td><td  ><p>55041</p></td></tr><tr><td class="firstcol " ><p><strong>4,000 Hz</strong></p></td><td  ><p>58,700</p></td></tr><tr><td class="firstcol " ><p><strong>8,000 Hz</strong></p></td><td  ><p>56,170</p></td></tr></tbody></table></div><p>Who knew that the pro players who spend multiple hours a day firing digital guns would be right about the best settings to fire those fake firearms? For me, I find 1,000 Hz is my sweet spot for performance and feel. Considering a slower DPI got me better scores, 800 DPI will become part of my regular rotation too. I'm a tad too impatient for lower than 1600 DPI whilst scrolling my desktop (especially with two monitors), but when it comes to aim, slower can be better. Or it can if you're about average like me. </p><p>For 'fun', I tried it on the highest DPI I have available to me, 65000. I got a miserable score of 10,294, and even that was a huge struggle. So there you go. If you're average at shooting (sorry to hear that), consider giving a low DPI a go. It might not feel as snappy, but it's plenty quick after some getting used to and accurate to boot. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/i-set-out-to-prove-polling-rate-affects-my-aim-and-instead-found-my-favourite-dpi-setting/</link>
                                                                            <description>
                            <![CDATA[ The polling rate boot camp was worth it, but for a different reason. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">nbHTrVVHUdpH23We7WJfym</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cxd8rkCLXjqm8GFbdmpNcZ-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 22 Sep 2026 16:31:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/cxd8rkCLXjqm8GFbdmpNcZ-1920-80.png">
                                                            <media:credit><![CDATA[Aimlabs]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot of Aimlabs, showing a gun pointing at blue orbs]]></media:description>                                                            <media:text><![CDATA[A screenshot of Aimlabs, showing a gun pointing at blue orbs]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot of Aimlabs, showing a gun pointing at blue orbs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cxd8rkCLXjqm8GFbdmpNcZ-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm a thoroughly average gamer. And in first-person shooters, I reckon I am ever so slightly above average at aiming—If aim-tester software, Aimlabs, is anything to go by, at least (top 38%, baby). But as a hardware tester, I have access to all kinds of gaming gear, and that includes competitive-level specs. </p><p>I wanted to see if the average gamer would benefit from a better polling rate and, as the average gamer, I thought I was the perfect guinea pig. So, grabbing my <a href="https://www.pcgamer.com/hardware/gaming-mice/asus-rog-harpe-ii-extreme-edition-20-review/" target="_blank">Asus Rog Harpe II Extreme Edition 20</a>, a mouse with a max DPI of 65,000 and a max polling rate of 8,000 Hz, I went through the training software at different polling rates multiple times to see if it would improve my aim. </p><p>If you are unaware of what exactly a polling rate is, it is the rate at which your gaming mouse communicates with your rig. A 125 Hz polling rate gives feedback to your PC every 8 milliseconds, whereas 8,000 Hz gives feedback every 0.125 milliseconds. Generally speaking, the advice for most gamers is to linger at around 1,000 Hz, as responding every millisecond is plenty fast but not so fast that it drains the battery life of your squeaker. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script><p>Aimlabs is a free bit of software that tests your shooting across a series of firing ranges. It then ranks your accuracy and speed before putting it all together for a final score. A flat score of 50,000 tends to put you just around the middle of the pack worldwide. Considering this sample set consists of people who specifically seek out software to get better at shooting, I'd imagine the top 50% of Aimlabs is better at aiming than the top 50% of gamers overall. </p><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="5Z5HG6hDyVtLXotzVznxzd" name="C (52)" alt="Asus ROG Harpe II Extreme Edition 20 in a hand, from the back" src="https://cdn.mos.cms.futurecdn.net/5Z5HG6hDyVtLXotzVznxzd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The mouse I used.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>First, my methodology. I booted up the Aimlabs software and picked Gridshot (Ultimate), a firing range where blue orbs pop up on screen, and you have to fire at them with a pistol. You have unlimited ammo, so you don't have to concern yourself with conserving it, and you don't need to move, either. Through minor adjustments and flicks, you simply have to hit the bubbles as quickly as you can whilst receiving score penalties for missing. That means it's a test of both accuracy and speed. I went through the map at every polling rate once or twice (between seven and fourteen runs), before doing a final run, and those scores are the ones you see below.</p><p>After those warm-up rounds, I decided my first test would be on 1600 DPI, which is what feels most natural for me. You can see my results below</p><div ><table><caption>1600 DPI results</caption><tbody><tr><td class="firstcol " ><p><strong>125 Hz</strong></p></td><td  ><p>58,612</p></td></tr><tr><td class="firstcol " ><p><strong>250 Hz</strong></p></td><td  ><p>51,065</p></td></tr><tr><td class="firstcol " ><p><strong>500 Hz</strong></p></td><td  ><p>57,027</p></td></tr><tr><td class="firstcol " ><p><strong>1,000 Hz</strong></p></td><td  ><p>57,232</p></td></tr><tr><td class="firstcol " ><p><strong>2,000 Hz</strong></p></td><td  ><p>53,244</p></td></tr><tr><td class="firstcol " ><p><strong>4,000 Hz</strong></p></td><td  ><p>52,215</p></td></tr><tr><td class="firstcol " ><p><strong>8,000 Hz</strong></p></td><td  ><p>58,441</p></td></tr></tbody></table></div><p>Uhhh yeah, that is all over the place. But I can say it felt most comfortable at 1,000 Hz, mostly because I aim based on feel. I don't usually pay all that much attention to the cursor as it moves. As such, I would say 125 Hz feels awkward but played fine, and 2,000 Hz is where I stop noticing much of a difference. </p><p>4000 DPI felt significantly worse, but it was where I noticed the polling rate making the biggest difference. I consistently lost track of the cursor at 125 Hz thanks to the speed of the mouse, but could fairly confidently read the position of the mouse at 8,000 Hz. You can see my results for that below</p><div ><table><caption>4000 DPI results</caption><tbody><tr><td class="firstcol " ><p><strong>125 Hz</strong></p></td><td  ><p>37,885</p></td></tr><tr><td class="firstcol " ><p><strong>250 Hz</strong></p></td><td  ><p>41,183</p></td></tr><tr><td class="firstcol " ><p><strong>500 Hz</strong></p></td><td  ><p>43689</p></td></tr><tr><td class="firstcol " ><p><strong>1,000 Hz</strong></p></td><td  ><p>48341</p></td></tr><tr><td class="firstcol " ><p><strong>2,000 Hz</strong></p></td><td  ><p>46242</p></td></tr><tr><td class="firstcol " ><p><strong>4,000 Hz</strong></p></td><td  ><p>50,053</p></td></tr><tr><td class="firstcol " ><p><strong>8,000 Hz</strong></p></td><td  ><p>49,952</p></td></tr></tbody></table></div><p>As you can see, the lower polling rate equates to lower scores at 4,000 DPI, but it varies a good bit past 1,000 Hz. My best score is at 4,000 Hz, but 8,000 Hz and 1000 Hz are close enough in score for me to say I don't think I'm better at significantly higher polling rates. I did feel the difference all the way up to 4,000 Hz, though. </p><p>However, many pro players use a low DPI, ranging from 600 to 800 DPI, so I thought I'd test that and got by far my best scores</p><div ><table><caption>800 DPI results</caption><tbody><tr><td class="firstcol " ><p><strong>125 Hz</strong></p></td><td  ><p>57874</p></td></tr><tr><td class="firstcol " ><p><strong>250 Hz</strong></p></td><td  ><p>58,879</p></td></tr><tr><td class="firstcol " ><p><strong>500 Hz</strong></p></td><td  ><p>59,866</p></td></tr><tr><td class="firstcol " ><p><strong>1,000 Hz</strong></p></td><td  ><p>60,256</p></td></tr><tr><td class="firstcol " ><p><strong>2,000 Hz</strong></p></td><td  ><p>55041</p></td></tr><tr><td class="firstcol " ><p><strong>4,000 Hz</strong></p></td><td  ><p>58,700</p></td></tr><tr><td class="firstcol " ><p><strong>8,000 Hz</strong></p></td><td  ><p>56,170</p></td></tr></tbody></table></div><p>Who knew that the pro players who spend multiple hours a day firing digital guns would be right about the best settings to fire those fake firearms? For me, I find 1,000 Hz is my sweet spot for performance and feel. Considering a slower DPI got me better scores, 800 DPI will become part of my regular rotation too. I'm a tad too impatient for lower than 1600 DPI whilst scrolling my desktop (especially with two monitors), but when it comes to aim, slower can be better. Or it can if you're about average like me. </p><p>For 'fun', I tried it on the highest DPI I have available to me, 65000. I got a miserable score of 10,294, and even that was a huge struggle. So there you go. If you're average at shooting (sorry to hear that), consider giving a low DPI a go. It might not feel as snappy, but it's plenty quick after some getting used to and accurate to boot. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Finalmouse claims its mouse has the absolute fastest click, quicker than the Logitech Superstrike and Razer Viper V4 Pro ]]></title>
                                                                                                <dc:content><![CDATA[ <p>According to niche mouse maker Finalmouse, its <a href="https://www.pcgamer.com/hardware/gaming-mice/this-new-gaming-mouse-looks-to-combine-tech-similar-to-logitechs-analogue-clicks-and-razers-frame-sync-but-im-a-little-sceptical/" target="_blank">new hybrid mechanical-optical Starlight X mouse</a> has <a href="https://x.com/finalmouse/status/2097843893761175601?s=20" target="_blank">faster clicks than any other it's tested</a>, including the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>. </p><p>"At the centre of SLX is an entirely new TMR DS analogue click architecture.... The result is not simply the fastest click latency we've ever produced, SLX achieves the fastest click latency of any gaming mouse we've tested. And, beyond that, the fastest button input we've measured in a consumer electronic device."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2097843893761175601"><p lang="en" dir="ltr">SLX has achieved a result that extends beyond gaming mice: the lowest button-input latency we’ve ever measured in a consumer electronics device.Powered by its TMR analog technology.An extraordinary claim. A measurable result.SLX — 2.0 msViper v4 Pro — 7.5 msOP1 8k v2 —… pic.twitter.com/TMxHoyQ5Ji<a href="https://twitter.com/cantworkitout/status/2097843893761175601">September 10, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Apparently, Finalmouse used to use its own <a href="https://finalmouse.com/products/xlat-overview" target="_blank">XLat tester</a> to measure the time it takes from the mouse switch electrically closing to the USB packet arriving at your system. But this isn't the whole story, because the time to actually press the button down, <em>before </em>the switch closes, is important, too. Decreasing this button-press time is the main benefit Logitech pointed everyone towards with the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a>, and is what allowed the company to <a href="https://www.pcgamer.com/hardware/gaming-mice/underneath-the-superstrike-how-logitech-has-kick-started-the-next-generation-of-gaming-mouse-tech/" target="_blank">claim a 15–30 ms reduction in click latency</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYklvW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYklvW.js" async></script><p>Using copper tape on the surface of the mouse clicker in combination with its XLat tester and a machine it built to model a human click, Finalmouse has managed to measure the total time taken from starting to press the button to the data packet being received by the host system:</p><p>"[The pressing machine,] in combination with a little bit of copper tape and an XLat, will allow us to very accurately model the end-to-end latency of something that looks as closely as possible like a human click actuating a mouse."</p><p>Finalmouse compares a pre-production sample of the Starlight X to the Superstrike, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, and the Endgame Gear OP1 8K V2. The latter mouse is the fastest one that Finalmouse has measured just considering the latency from actuation to packet receipt. However, it lacks the pre-click latency reduction that analogue clicks provide.</p><div ><table><caption>End-to-end mouse click latency</caption><tbody><tr><td class="firstcol " ><p><strong>Viper V4 Pro</strong></p></td><td  ><p>7.5 ms</p></td></tr><tr><td class="firstcol " ><p><strong>OP1 8K V2</strong></p></td><td  ><p>5.7 ms</p></td></tr><tr><td class="firstcol " ><p><strong>GPX2 Superstrike</strong></p></td><td  ><p>3 ms</p></td></tr><tr><td class="firstcol " ><p><strong>Starlight X</strong></p></td><td  ><p>2 ms</p></td></tr></tbody></table></div><p>Averaging 50 test clicks for each mouse, the two mice with analogue switches clicked significantly quicker than the two with traditional mechanical switches.</p><p>Finalmouse is keen to point out that the Starlight X is quicker than the Superstrike; however, I'm not massively convinced this is important. That's because presumably the way this is achieved is by making the click actuate even sooner in the button depression than the Superstrike's lowest level, thanks to its TMR tech. </p><p>But although I do fine with the Superstrike on its lowest level of actuation, anecdotally I've heard from a lot of people who aren't keen on keeping the Superstrike at this low of an actuation level and who keep it at level three or four. In which case, the SLX's 2 ms score might just be a theoretical but not very practically realisable measurement.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1436px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="MpKxdY8stZNUMFHsmDRr38" name="image - 2026-09-10T123506.222" alt="Finalmouse's machine to press mouse buttons." src="https://cdn.mos.cms.futurecdn.net/MpKxdY8stZNUMFHsmDRr38-1920-80.jpg" mos="" align="middle" fullscreen="" width="1436" height="808" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Finalmouse's machine to press mouse buttons. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Finalmouse)</span></figcaption></figure><p>What I find more interesting than the Finalmouse's score is the difference between the analogue and mechanical mouse scores. Logitech's data indicated a much bigger reduction than this, but Finalmouse's testing seems to show that when we compare an analogue click to a mechanical one, when testing under normal finger-press conditions, you 'only' shave off about 3–5 ms.</p><p>I put 'only' in quotes, however, because in practice this still shows that it's shaved in half from a couple of fast mice without analogue clicks. This being said, my reaction time (as tested by the <a href="https://humanbenchmark.com/tests/reactiontime" target="_blank">Human Benchmark</a>) is about 165 ms, so we are dealing in very slight improvements. Even pro gamers don't have reaction times lower than 100 ms.</p><p>As far as the Starlight X goes, I suppose if you're perfectly fine using the Superlight's lowest level of actuation and think you could go even lower, then maybe it will be worth a look. Though, at least according to commenters on X, shipping times for the mouse are best measured in months rather than milliseconds, so if their words are anything to go by, you could be waiting a while.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/finalmouse-claims-its-mouse-has-the-absolute-fastest-click-quicker-than-the-logitech-superstrike-and-razer-viper-v4-pro/</link>
                                                                            <description>
                            <![CDATA[ "The fastest button input we've measured in a consumer electronic device." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5ggnPrVthaHPiypte2Xc85</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6jYXrvnXLgusqHLuEzUZTo-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 10 Sep 2026 13:59:32 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6jYXrvnXLgusqHLuEzUZTo-1920-80.jpg">
                                                            <media:credit><![CDATA[Finalmouse @ X.com]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech G Pro X2 Superstrike&#039;s mouse click speed being tested on a machine by Finalmouse.]]></media:description>                                                            <media:text><![CDATA[A Logitech G Pro X2 Superstrike&#039;s mouse click speed being tested on a machine by Finalmouse.]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech G Pro X2 Superstrike&#039;s mouse click speed being tested on a machine by Finalmouse.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6jYXrvnXLgusqHLuEzUZTo-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>According to niche mouse maker Finalmouse, its <a href="https://www.pcgamer.com/hardware/gaming-mice/this-new-gaming-mouse-looks-to-combine-tech-similar-to-logitechs-analogue-clicks-and-razers-frame-sync-but-im-a-little-sceptical/" target="_blank">new hybrid mechanical-optical Starlight X mouse</a> has <a href="https://x.com/finalmouse/status/2097843893761175601?s=20" target="_blank">faster clicks than any other it's tested</a>, including the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>. </p><p>"At the centre of SLX is an entirely new TMR DS analogue click architecture.... The result is not simply the fastest click latency we've ever produced, SLX achieves the fastest click latency of any gaming mouse we've tested. And, beyond that, the fastest button input we've measured in a consumer electronic device."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2097843893761175601"><p lang="en" dir="ltr">SLX has achieved a result that extends beyond gaming mice: the lowest button-input latency we’ve ever measured in a consumer electronics device.Powered by its TMR analog technology.An extraordinary claim. A measurable result.SLX — 2.0 msViper v4 Pro — 7.5 msOP1 8k v2 —… pic.twitter.com/TMxHoyQ5Ji<a href="https://twitter.com/cantworkitout/status/2097843893761175601">September 10, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Apparently, Finalmouse used to use its own <a href="https://finalmouse.com/products/xlat-overview" target="_blank">XLat tester</a> to measure the time it takes from the mouse switch electrically closing to the USB packet arriving at your system. But this isn't the whole story, because the time to actually press the button down, <em>before </em>the switch closes, is important, too. Decreasing this button-press time is the main benefit Logitech pointed everyone towards with the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a>, and is what allowed the company to <a href="https://www.pcgamer.com/hardware/gaming-mice/underneath-the-superstrike-how-logitech-has-kick-started-the-next-generation-of-gaming-mouse-tech/" target="_blank">claim a 15–30 ms reduction in click latency</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYklvW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYklvW.js" async></script><p>Using copper tape on the surface of the mouse clicker in combination with its XLat tester and a machine it built to model a human click, Finalmouse has managed to measure the total time taken from starting to press the button to the data packet being received by the host system:</p><p>"[The pressing machine,] in combination with a little bit of copper tape and an XLat, will allow us to very accurately model the end-to-end latency of something that looks as closely as possible like a human click actuating a mouse."</p><p>Finalmouse compares a pre-production sample of the Starlight X to the Superstrike, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, and the Endgame Gear OP1 8K V2. The latter mouse is the fastest one that Finalmouse has measured just considering the latency from actuation to packet receipt. However, it lacks the pre-click latency reduction that analogue clicks provide.</p><div ><table><caption>End-to-end mouse click latency</caption><tbody><tr><td class="firstcol " ><p><strong>Viper V4 Pro</strong></p></td><td  ><p>7.5 ms</p></td></tr><tr><td class="firstcol " ><p><strong>OP1 8K V2</strong></p></td><td  ><p>5.7 ms</p></td></tr><tr><td class="firstcol " ><p><strong>GPX2 Superstrike</strong></p></td><td  ><p>3 ms</p></td></tr><tr><td class="firstcol " ><p><strong>Starlight X</strong></p></td><td  ><p>2 ms</p></td></tr></tbody></table></div><p>Averaging 50 test clicks for each mouse, the two mice with analogue switches clicked significantly quicker than the two with traditional mechanical switches.</p><p>Finalmouse is keen to point out that the Starlight X is quicker than the Superstrike; however, I'm not massively convinced this is important. That's because presumably the way this is achieved is by making the click actuate even sooner in the button depression than the Superstrike's lowest level, thanks to its TMR tech. </p><p>But although I do fine with the Superstrike on its lowest level of actuation, anecdotally I've heard from a lot of people who aren't keen on keeping the Superstrike at this low of an actuation level and who keep it at level three or four. In which case, the SLX's 2 ms score might just be a theoretical but not very practically realisable measurement.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1436px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="MpKxdY8stZNUMFHsmDRr38" name="image - 2026-09-10T123506.222" alt="Finalmouse's machine to press mouse buttons." src="https://cdn.mos.cms.futurecdn.net/MpKxdY8stZNUMFHsmDRr38-1920-80.jpg" mos="" align="middle" fullscreen="" width="1436" height="808" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Finalmouse's machine to press mouse buttons. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Finalmouse)</span></figcaption></figure><p>What I find more interesting than the Finalmouse's score is the difference between the analogue and mechanical mouse scores. Logitech's data indicated a much bigger reduction than this, but Finalmouse's testing seems to show that when we compare an analogue click to a mechanical one, when testing under normal finger-press conditions, you 'only' shave off about 3–5 ms.</p><p>I put 'only' in quotes, however, because in practice this still shows that it's shaved in half from a couple of fast mice without analogue clicks. This being said, my reaction time (as tested by the <a href="https://humanbenchmark.com/tests/reactiontime" target="_blank">Human Benchmark</a>) is about 165 ms, so we are dealing in very slight improvements. Even pro gamers don't have reaction times lower than 100 ms.</p><p>As far as the Starlight X goes, I suppose if you're perfectly fine using the Superlight's lowest level of actuation and think you could go even lower, then maybe it will be worth a look. Though, at least according to commenters on X, shipping times for the mouse are best measured in months rather than milliseconds, so if their words are anything to go by, you could be waiting a while.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Oops, looks like the Logitech X3 Superstrike has leaked on Amazon and the rapid trigger gaming mouse will have +50% battery life ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I was just as surprised as anyone to <a href="https://www.pcgamer.com/hardware/gaming-mice/we-might-see-a-new-logitech-superstrike-this-september-just-a-few-months-after-the-worlds-first-proper-analogue-mouse-launched/" target="_blank">hear word</a> back in July that we could see <em>another </em>Logitech Superstrike gaming mouse this year. The first one, the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a>, only launched a few months ago, and yet rumours suggest the X3 Superstrike will be revealed later this month during the <a href="https://www.logitechg.com/en-gb/campaigns/logitechg-play" target="_blank">Logitech G Play event</a>. And now, given an <a href="https://www.amazon.com/live/video/0d1cbf88dbd64bb28fd12a1f507179e0" target="_blank">Amazon video</a> attributed to Logitech Canada (via <a href="https://x.com/jakeufps/status/2094794394255643120?s=20" target="_blank">Jakeu on X</a>), this seems all but confirmed.</p><p>I'll be attending G Play, so hopefully I'll get to see the new mouse in person, but I haven't actually been told what I'll be seeing there yet. Given this video, though, it's gotta include the new Superstrike, right?</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2094794392275968260"><p lang="en" dir="ltr">Amazon posted the Logitech G Pro X3 Superstrike Trailer Early pic.twitter.com/dHSkGK2x4O<a href="https://twitter.com/cantworkitout/status/2094794392275968260">September 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Previous <a href="https://www.pcgamer.com/hardware/gaming-mice/these-could-be-the-first-leaked-images-of-the-new-logitech-superstrike-which-looks-rather-dashing-in-all-black/" target="_blank">leaks and rumours</a> suggested an X3 Superstrike that has the option of an all-black colourway (excluding some white accents) or a pink-and-black design. The video on Amazon confirms both of these. These previous rumours had also claimed the new version would have an upgraded controller, plus some tweaks to the haptic-inductive trigger system (HITS).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oo2MqW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oo2MqW.js" async></script><p>The HITS system is, of course, the main draw to the Logi Superstrike. The induction technology allows for adjustable actuation and rapid trigger, effectively allowing you to lessen the latency between deciding to click and actually clicking. The haptic system means you get the feeling of a click <em>when </em>you click, despite the differing actuation levels.</p><p>In the video, a new chipset and "upgraded" sensor are confirmed, the latter of which allows for an an additional 4,000 DPI, up to 48,000. But in addition to this, there are a couple more interesting claims. First is that we'll be seeing an extra +50% battery life, up to 135 hours from the original Superstrike's 90 hours at 1,000 Hz polling. Second is that the mouse will apparently have "refined weight and balance."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1107px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="qvczCuZjmwXKKrL9vvUYyc" name="image (99)" alt="A screenshot of the Logitech X3 Superstrike from a Logitech Canada Amazon video." src="https://cdn.mos.cms.futurecdn.net/qvczCuZjmwXKKrL9vvUYyc-1920-80.jpg" mos="" align="middle" fullscreen="" width="1107" height="623" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon, Logitech Canada)</span></figcaption></figure><p>This last point is something a fair few people should be happy about, because some people didn't like the weighting of the X2 Superstrike. Logitech managed to shave off enough weight to keep it to around 60 g despite the new HITS system, but this made it quite front-weighted. Hopefully "refined weight and balance" means a more <em>even </em>distribution. And I might be piping up a fool's hope, here, but if some extra grams can be shaved off, then even better.</p><p>At any rate, it looks like we shouldn't have long to wait to find out. Maybe Logi will also do something about those mushy side buttons. In my book, that would truly leave the X3 Superstrike in top standing for competitive gaming.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/oops-looks-like-the-logitech-x3-superstrike-has-leaked-on-amazon-and-the-rapid-trigger-gaming-mouse-will-have-50-percent-battery-life/</link>
                                                                            <description>
                            <![CDATA[ I don't think this was meant to be shown so early. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oepLAYysbJJHw2Q7yKhPP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nqmgQ8H6pgLnvCMsAV9UHg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 01 Sep 2026 15:20:29 +0000</pubDate>                                                                                                                                <updated>Tue, 01 Sep 2026 15:21:33 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/nqmgQ8H6pgLnvCMsAV9UHg-1920-80.jpg">
                                                            <media:credit><![CDATA[Logitech, Amazon]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A leaked render of the Logitech G Pro X3 Superstrike from a video on Amazon, showing a +50% battery life stat.]]></media:description>                                                            <media:text><![CDATA[A leaked render of the Logitech G Pro X3 Superstrike from a video on Amazon, showing a +50% battery life stat.]]></media:text>
                                <media:title type="plain"><![CDATA[A leaked render of the Logitech G Pro X3 Superstrike from a video on Amazon, showing a +50% battery life stat.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nqmgQ8H6pgLnvCMsAV9UHg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I was just as surprised as anyone to <a href="https://www.pcgamer.com/hardware/gaming-mice/we-might-see-a-new-logitech-superstrike-this-september-just-a-few-months-after-the-worlds-first-proper-analogue-mouse-launched/" target="_blank">hear word</a> back in July that we could see <em>another </em>Logitech Superstrike gaming mouse this year. The first one, the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a>, only launched a few months ago, and yet rumours suggest the X3 Superstrike will be revealed later this month during the <a href="https://www.logitechg.com/en-gb/campaigns/logitechg-play" target="_blank">Logitech G Play event</a>. And now, given an <a href="https://www.amazon.com/live/video/0d1cbf88dbd64bb28fd12a1f507179e0" target="_blank">Amazon video</a> attributed to Logitech Canada (via <a href="https://x.com/jakeufps/status/2094794394255643120?s=20" target="_blank">Jakeu on X</a>), this seems all but confirmed.</p><p>I'll be attending G Play, so hopefully I'll get to see the new mouse in person, but I haven't actually been told what I'll be seeing there yet. Given this video, though, it's gotta include the new Superstrike, right?</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2094794392275968260"><p lang="en" dir="ltr">Amazon posted the Logitech G Pro X3 Superstrike Trailer Early pic.twitter.com/dHSkGK2x4O<a href="https://twitter.com/cantworkitout/status/2094794392275968260">September 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Previous <a href="https://www.pcgamer.com/hardware/gaming-mice/these-could-be-the-first-leaked-images-of-the-new-logitech-superstrike-which-looks-rather-dashing-in-all-black/" target="_blank">leaks and rumours</a> suggested an X3 Superstrike that has the option of an all-black colourway (excluding some white accents) or a pink-and-black design. The video on Amazon confirms both of these. These previous rumours had also claimed the new version would have an upgraded controller, plus some tweaks to the haptic-inductive trigger system (HITS).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oo2MqW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oo2MqW.js" async></script><p>The HITS system is, of course, the main draw to the Logi Superstrike. The induction technology allows for adjustable actuation and rapid trigger, effectively allowing you to lessen the latency between deciding to click and actually clicking. The haptic system means you get the feeling of a click <em>when </em>you click, despite the differing actuation levels.</p><p>In the video, a new chipset and "upgraded" sensor are confirmed, the latter of which allows for an an additional 4,000 DPI, up to 48,000. But in addition to this, there are a couple more interesting claims. First is that we'll be seeing an extra +50% battery life, up to 135 hours from the original Superstrike's 90 hours at 1,000 Hz polling. Second is that the mouse will apparently have "refined weight and balance."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1107px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="qvczCuZjmwXKKrL9vvUYyc" name="image (99)" alt="A screenshot of the Logitech X3 Superstrike from a Logitech Canada Amazon video." src="https://cdn.mos.cms.futurecdn.net/qvczCuZjmwXKKrL9vvUYyc-1920-80.jpg" mos="" align="middle" fullscreen="" width="1107" height="623" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon, Logitech Canada)</span></figcaption></figure><p>This last point is something a fair few people should be happy about, because some people didn't like the weighting of the X2 Superstrike. Logitech managed to shave off enough weight to keep it to around 60 g despite the new HITS system, but this made it quite front-weighted. Hopefully "refined weight and balance" means a more <em>even </em>distribution. And I might be piping up a fool's hope, here, but if some extra grams can be shaved off, then even better.</p><p>At any rate, it looks like we shouldn't have long to wait to find out. Maybe Logi will also do something about those mushy side buttons. In my book, that would truly leave the X3 Superstrike in top standing for competitive gaming.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've spent four months testing control pads in Counter-Strike and I've finally settled on my fave ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Most gamers enjoy a speedy or balanced feel to their mouse pad, but there are a few of us out there who have a penchant for stopping power. If you're into tactical shooters that require very steady aim plus occasional flicks with a precise stop on your enemy's head, slower control pads are for you.</p><p>I've been trying out some different control pads in Counter-Strike 2 for months now and I feel like I'm finally able to draw some solid conclusions over which are best. At least as far as my own fingertips are concerned. Your mileage may of course vary.</p><p><strong>Personal favourite: </strong><a href="#section-zowie-h-sr-iii-g-sr-iii" target="_blank"><strong>Zowie H-SR III</strong><br></a><strong>Noteworthy: </strong><a href="#section-wallhack-cr-005" target="_blank"><strong>Wallhack CR-005</strong></a></p><h2 class="article-body__section" id="section-key-terms"><span>Key terms</span></h2><ul><li><strong>Stopping power: </strong>How easy it is to stop your mouse where and when you want it to, presumably over an enemy's head.</li><li><strong>Static friction:</strong> How hard it is to get the mouse moving from stationary. The combination of this and dynamic friction makes for good stopping power.</li><li><strong>Dynamic friction: </strong>How hard it is to keep the mouse moving when in motion. The combination of this and static friction makes for good stopping power.</li><li><strong>Softer pads: </strong>Tend to be slower.</li><li><strong>Harder pads:</strong> Tend to be faster.</li></ul><h2 class="article-body__section" id="section-razer-gigantus-v2-pro-control-ver"><span>Razer Gigantus V2 Pro (Control ver.)</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="dKSrDaPqYeUjSXZeMMKMkK" name="IMG_3745" alt="A Razer Gigantus V2 Pro Control mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/dKSrDaPqYeUjSXZeMMKMkK-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>4.5/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>4/5</strong></p></div></div></div></div><div ><table><caption>Razer Gigantus V2 Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>500 x 480 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Corner logo, coloured tag, green base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Soft cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Similar to traditional cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Soft foam</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p> <a href="https://www.razer.com/gaming-mouse-mats/razer-gigantus-v2-pro/RZ02-05490400-R3U1" target="_blank">$50</a> / <a href="https://www.razer.com/gb-en/gaming-mouse-mats/razer-gigantus-v2-pro/RZ02-05490400-R3M1" target="_blank">£50</a></p></td></tr></tbody></table></div><p>Razer's Gigantus V2 Pro is great if you really have a thing for slow pads and don't much care what you have to sacrifice to get it. The surface, which Razer says was made to match the pro player's <a href="https://www.hltv.org/player/3741/niko" target="_blank">NiKo</a>'s preference, is indeed very slow—slower than any I've used. This means little chance of accidentally nudging your crosshair out of line when holding an angle.</p><p>However, it's a bit <em>too </em>slow for my liking, and I'm saying this as someone who massively prefers control pads to speed ones now for playing CS2. I think the slowness is in part thanks to how soft the pad is as it's noticeably softer than any other I've tried. </p><p>But if something super-slow is your thing—and who can argue with one of the best Counter-Strike players of all time?—it'll serve you well. Also note there's even a Max Control version that is, presumably, even slower than this one.</p><h2 class="article-body__section" id="section-corsair-mm-pro"><span>Corsair MM Pro</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="2fGGvt4bBfWq7JZQRpauHQ" name="IMG_3746" alt="A Corsair MM Pro mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/2fGGvt4bBfWq7JZQRpauHQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div ><table><caption>Corsair MM Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>450 x 400 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Corner logo, black tag, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Medium cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Similar to traditional cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Rubber-like PU (polyurethane)</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.corsair.com/us/en/p/mousepads/ch-941c060-ww/mm-pro-control-large-esports-tuned-cloth-mouse-pad-black-ch-941c060" target="_blank">$50</a> / <a href="https://www.corsair.com/uk/en/p/mousepads/ch-941c060-ww/mm-pro-control-large-esports-tuned-cloth-mouse-pad-black-ch-941c060" target="_blank">£50</a></p></td></tr></tbody></table></div><p>Corsair's new pad is the one I like the least out of those I've tried. That's not to say it's bad, it just doesn't stand out in any particular way. It's smaller than the others and is a little too quick for my liking in a control pad, feeling a bit closer to a regular cloth pad than I'd like. In particular, I notice that with this pad I have to try a little harder to keep my crosshair steady when holding a headshot angle.</p><p>Still, it does look nice and it <em>is </em>slower and more controlled than many other (non-control) options on the market—it's certainly slower than speed pads. If you prefer a little more speed to your control and don't mind your competitive pad being a bit on the smaller side, the MM Pro is a reasonable choice.</p><h2 class="article-body__section" id="section-zowie-h-sr-iii-g-sr-iii"><span>Zowie H-SR III / G-SR III</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="TLNGhkF5dok6k5uoYjsSnV" name="IMG_3743" alt="A Zowie H-SR III mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/TLNGhkF5dok6k5uoYjsSnV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>4/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div ><table><caption>Zowie H-SR III / G-SR III specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p> 500 x 500 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Small coloured on-pad corner tag, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Hard cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Hard and slightly rough cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Foam with rubber-like dots</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://zowie.benq.com/en-us/mouse-pad/h-sr-iii.html" target="_blank">$50</a> / <a href="https://zowie.benq.eu/en-uk/mouse-pad/h-sr-iii.html#game-spec-table-anchor" target="_blank">£50</a></p></td></tr></tbody></table></div><p>I was immediately sold on this Zowie pad when I tried it. It ticks every box for me and is what I keep returning to as my baseline for playing Counter-Strike. That's because it manages to maintain a level of static friction that keeps my crosshair steady when holding angles, but is just on that cusp where I can also move my mouse pretty easily for flicks.</p><p>There's also its dynamic friction, ie, how it feels when actually moving the mouse. On this front, the H-SR III doesn't just have a decent amount of slowness/muddiness to it but also a texture that you can subtly <em>feel </em>as you move. It might be the placebo effect, but I feel like that's helped my muscle memory a little when aiming in-game.</p><p>Then there's the fact that it's a pretty hard pad for cloth, which means you don't get much inconsistency to how much your mouse drags depending on how hard you press. That can make all the difference in clutch moments when you tense up and push down harder. I really don't have anything to complain about here, which is why the Zowie is my go-to. (The G-SR III is just the H-SR III but a little smaller.)</p><h2 class="article-body__section" id="section-steelseries-qck-performance-control"><span>Steelseries QcK Performance Control</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="A8cXcC6quFdMCEVE6Vsiwa" name="IMG_3744" alt="A Steelseries QcK Performance Control mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/A8cXcC6quFdMCEVE6Vsiwa-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div ><table><caption>Steelseries QcK Performance Control specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>490 x 420 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Small coloured corner tag, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Medium cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Rough and very textured</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Neoprene</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://steelseries.com/gaming-mousepads/qck-performance?mousepadSize=large&model=Control" target="_blank">$40</a> / <a href="https://steelseries.com/en-gb/gaming-mousepads/qck-performance?mousepadSize=large&model=Control" target="_blank">£40</a></p></td></tr></tbody></table></div><p>Steelseries' QcK Performance Control is a very divisive pad. I sent it to my colleague Andy, and he had a much worse time of it than I did. To be honest I can see why: it's not your usual control pad.</p><p>Instead of opting for a slow cloth, SteelSeries has given this pad quite a smooth and hard-topped but very rough texture. You can really feel your mouse moving across it, which does help your muscle memory. Stopping power is pretty good, too.</p><p>On the other hand, static friction isn't quite as good as on the Zowie pad, and dynamic friction might be a <em>touch </em>quicker, too, though it's hard to tell. Most importantly, though, the rough texture can be quite unpleasant on your arm when gaming for an extended period if you're a low-sens player as many control pad gamers are. Unless you use a gaming sleeve like me, of course, but few are willing to take the L to their public image that I am.</p><h2 class="article-body__section" id="section-wallhack-cr-005"><span>Wallhack CR-005</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="T6iSLXaDwdfacGLVCUSvG6" name="IMG_3322 (1)" alt="The corner of a Wallhack glass mouse pad." src="https://cdn.mos.cms.futurecdn.net/T6iSLXaDwdfacGLVCUSvG6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>2.5/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>2.5/5</strong></p></div></div></div></div><div ><table><caption>Wallhack CR-005 specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>510 x 440 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>white corner logo, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Hard glass</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Smooth matte</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Concave silicone pattern</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://wallhack.com/products/cr-005-black" target="_blank">$129</a> / <a href="https://wallhack.com/en-uk/products/cr-005-black" target="_blank">£99</a></p></td></tr></tbody></table></div><p>Yes, this is a glass pad on an article about control pads, and glass is usually as far from 'controlled' as you can imagine. The CR-005 that Wallhack has created, however, is a glass pad with "microscopic concave formations" that help slow things down.</p><p>However, it still doesn't quite match a good cloth control pad for, well, control. After breaking it in a little, I found it to be more speedy than the Zowie and even the Corsair. It's still not as fast as speed pads though, and the static friction is particularly nice for a glass pad. </p><p>The main benefit of going glass is that it should last a very long time, unlike a cloth pad which wears out pretty quickly. It will also have consistent friction and glide however hard you press into it. The downsides are not being able to roll it up, potentially <a href="https://www.pcgamer.com/hardware/gaming-mice/glass-mouse-pads-havent-won-me-over-but-gamer-sleeves-are-a-different-story/" target="_blank">having to wear a gaming sleeve to prevent your arm sticking</a>, having to replace your mouse skates more often as they get worn down, and having to wipe it down pretty frequently to keep dust away. </p><p>If it was a little slower and more controlled I think I'd make these sacrifices for the consistency and longevity of a glass pad, but it's just not quite there yet for control players compared to cloth. Saying that, even if it's not quite as slow as some cloth options, it's impressive that Wallhack has managed to make a glass pad as slow as this. It means glass pad lovers who play tac FPS need to miss out no longer.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/ive-spent-four-months-testing-control-pads-in-counter-strike-and-ive-finally-settled-on-my-fave/</link>
                                                                            <description>
                            <![CDATA[ Tactical FPS players will want to check this out. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wZYEXNwtqfZVdZpHEE3caC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ivJWb77ArwxEYfU5hSQzC9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 01 Sep 2026 13:20:06 +0000</pubDate>                                                                                                                                <updated>Tue, 01 Sep 2026 13:30:00 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ivJWb77ArwxEYfU5hSQzC9-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Razer Goliathus V2 Pro Control, Zowie H-SR III, and Steelseries QcK Performance Control mouse pad, layered on a desk.]]></media:description>                                                            <media:text><![CDATA[A Razer Goliathus V2 Pro Control, Zowie H-SR III, and Steelseries QcK Performance Control mouse pad, layered on a desk.]]></media:text>
                                <media:title type="plain"><![CDATA[A Razer Goliathus V2 Pro Control, Zowie H-SR III, and Steelseries QcK Performance Control mouse pad, layered on a desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ivJWb77ArwxEYfU5hSQzC9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Most gamers enjoy a speedy or balanced feel to their mouse pad, but there are a few of us out there who have a penchant for stopping power. If you're into tactical shooters that require very steady aim plus occasional flicks with a precise stop on your enemy's head, slower control pads are for you.</p><p>I've been trying out some different control pads in Counter-Strike 2 for months now and I feel like I'm finally able to draw some solid conclusions over which are best. At least as far as my own fingertips are concerned. Your mileage may of course vary.</p><p><strong>Personal favourite: </strong><a href="#section-zowie-h-sr-iii-g-sr-iii" target="_blank"><strong>Zowie H-SR III</strong><br></a><strong>Noteworthy: </strong><a href="#section-wallhack-cr-005" target="_blank"><strong>Wallhack CR-005</strong></a></p><h2 class="article-body__section" id="section-key-terms"><span>Key terms</span></h2><ul><li><strong>Stopping power: </strong>How easy it is to stop your mouse where and when you want it to, presumably over an enemy's head.</li><li><strong>Static friction:</strong> How hard it is to get the mouse moving from stationary. The combination of this and dynamic friction makes for good stopping power.</li><li><strong>Dynamic friction: </strong>How hard it is to keep the mouse moving when in motion. The combination of this and static friction makes for good stopping power.</li><li><strong>Softer pads: </strong>Tend to be slower.</li><li><strong>Harder pads:</strong> Tend to be faster.</li></ul><h2 class="article-body__section" id="section-razer-gigantus-v2-pro-control-ver"><span>Razer Gigantus V2 Pro (Control ver.)</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="dKSrDaPqYeUjSXZeMMKMkK" name="IMG_3745" alt="A Razer Gigantus V2 Pro Control mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/dKSrDaPqYeUjSXZeMMKMkK-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>4.5/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>4/5</strong></p></div></div></div></div><div ><table><caption>Razer Gigantus V2 Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>500 x 480 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Corner logo, coloured tag, green base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Soft cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Similar to traditional cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Soft foam</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p> <a href="https://www.razer.com/gaming-mouse-mats/razer-gigantus-v2-pro/RZ02-05490400-R3U1" target="_blank">$50</a> / <a href="https://www.razer.com/gb-en/gaming-mouse-mats/razer-gigantus-v2-pro/RZ02-05490400-R3M1" target="_blank">£50</a></p></td></tr></tbody></table></div><p>Razer's Gigantus V2 Pro is great if you really have a thing for slow pads and don't much care what you have to sacrifice to get it. The surface, which Razer says was made to match the pro player's <a href="https://www.hltv.org/player/3741/niko" target="_blank">NiKo</a>'s preference, is indeed very slow—slower than any I've used. This means little chance of accidentally nudging your crosshair out of line when holding an angle.</p><p>However, it's a bit <em>too </em>slow for my liking, and I'm saying this as someone who massively prefers control pads to speed ones now for playing CS2. I think the slowness is in part thanks to how soft the pad is as it's noticeably softer than any other I've tried. </p><p>But if something super-slow is your thing—and who can argue with one of the best Counter-Strike players of all time?—it'll serve you well. Also note there's even a Max Control version that is, presumably, even slower than this one.</p><h2 class="article-body__section" id="section-corsair-mm-pro"><span>Corsair MM Pro</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="2fGGvt4bBfWq7JZQRpauHQ" name="IMG_3746" alt="A Corsair MM Pro mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/2fGGvt4bBfWq7JZQRpauHQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div ><table><caption>Corsair MM Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>450 x 400 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Corner logo, black tag, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Medium cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Similar to traditional cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Rubber-like PU (polyurethane)</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.corsair.com/us/en/p/mousepads/ch-941c060-ww/mm-pro-control-large-esports-tuned-cloth-mouse-pad-black-ch-941c060" target="_blank">$50</a> / <a href="https://www.corsair.com/uk/en/p/mousepads/ch-941c060-ww/mm-pro-control-large-esports-tuned-cloth-mouse-pad-black-ch-941c060" target="_blank">£50</a></p></td></tr></tbody></table></div><p>Corsair's new pad is the one I like the least out of those I've tried. That's not to say it's bad, it just doesn't stand out in any particular way. It's smaller than the others and is a little too quick for my liking in a control pad, feeling a bit closer to a regular cloth pad than I'd like. In particular, I notice that with this pad I have to try a little harder to keep my crosshair steady when holding a headshot angle.</p><p>Still, it does look nice and it <em>is </em>slower and more controlled than many other (non-control) options on the market—it's certainly slower than speed pads. If you prefer a little more speed to your control and don't mind your competitive pad being a bit on the smaller side, the MM Pro is a reasonable choice.</p><h2 class="article-body__section" id="section-zowie-h-sr-iii-g-sr-iii"><span>Zowie H-SR III / G-SR III</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="TLNGhkF5dok6k5uoYjsSnV" name="IMG_3743" alt="A Zowie H-SR III mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/TLNGhkF5dok6k5uoYjsSnV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>4/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div ><table><caption>Zowie H-SR III / G-SR III specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p> 500 x 500 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Small coloured on-pad corner tag, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Hard cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Hard and slightly rough cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Foam with rubber-like dots</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://zowie.benq.com/en-us/mouse-pad/h-sr-iii.html" target="_blank">$50</a> / <a href="https://zowie.benq.eu/en-uk/mouse-pad/h-sr-iii.html#game-spec-table-anchor" target="_blank">£50</a></p></td></tr></tbody></table></div><p>I was immediately sold on this Zowie pad when I tried it. It ticks every box for me and is what I keep returning to as my baseline for playing Counter-Strike. That's because it manages to maintain a level of static friction that keeps my crosshair steady when holding angles, but is just on that cusp where I can also move my mouse pretty easily for flicks.</p><p>There's also its dynamic friction, ie, how it feels when actually moving the mouse. On this front, the H-SR III doesn't just have a decent amount of slowness/muddiness to it but also a texture that you can subtly <em>feel </em>as you move. It might be the placebo effect, but I feel like that's helped my muscle memory a little when aiming in-game.</p><p>Then there's the fact that it's a pretty hard pad for cloth, which means you don't get much inconsistency to how much your mouse drags depending on how hard you press. That can make all the difference in clutch moments when you tense up and push down harder. I really don't have anything to complain about here, which is why the Zowie is my go-to. (The G-SR III is just the H-SR III but a little smaller.)</p><h2 class="article-body__section" id="section-steelseries-qck-performance-control"><span>Steelseries QcK Performance Control</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="A8cXcC6quFdMCEVE6Vsiwa" name="IMG_3744" alt="A Steelseries QcK Performance Control mouse pad on a desk." src="https://cdn.mos.cms.futurecdn.net/A8cXcC6quFdMCEVE6Vsiwa-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>3/5</strong></p></div></div></div></div><div ><table><caption>Steelseries QcK Performance Control specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>490 x 420 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Small coloured corner tag, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Medium cloth</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Rough and very textured</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Neoprene</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://steelseries.com/gaming-mousepads/qck-performance?mousepadSize=large&model=Control" target="_blank">$40</a> / <a href="https://steelseries.com/en-gb/gaming-mousepads/qck-performance?mousepadSize=large&model=Control" target="_blank">£40</a></p></td></tr></tbody></table></div><p>Steelseries' QcK Performance Control is a very divisive pad. I sent it to my colleague Andy, and he had a much worse time of it than I did. To be honest I can see why: it's not your usual control pad.</p><p>Instead of opting for a slow cloth, SteelSeries has given this pad quite a smooth and hard-topped but very rough texture. You can really feel your mouse moving across it, which does help your muscle memory. Stopping power is pretty good, too.</p><p>On the other hand, static friction isn't quite as good as on the Zowie pad, and dynamic friction might be a <em>touch </em>quicker, too, though it's hard to tell. Most importantly, though, the rough texture can be quite unpleasant on your arm when gaming for an extended period if you're a low-sens player as many control pad gamers are. Unless you use a gaming sleeve like me, of course, but few are willing to take the L to their public image that I am.</p><h2 class="article-body__section" id="section-wallhack-cr-005"><span>Wallhack CR-005</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="T6iSLXaDwdfacGLVCUSvG6" name="IMG_3322 (1)" alt="The corner of a Wallhack glass mouse pad." src="https://cdn.mos.cms.futurecdn.net/T6iSLXaDwdfacGLVCUSvG6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Static Friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>2.5/5</strong></p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Dynamic friction:</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>2.5/5</strong></p></div></div></div></div><div ><table><caption>Wallhack CR-005 specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>510 x 440 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>white corner logo, black base</p></td></tr><tr><td class="firstcol " ><p><strong>Hard/soft</strong></p></td><td  ><p>Hard glass</p></td></tr><tr><td class="firstcol " ><p><strong>Texture</strong></p></td><td  ><p>Smooth matte</p></td></tr><tr><td class="firstcol " ><p><strong>Base</strong></p></td><td  ><p>Concave silicone pattern</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://wallhack.com/products/cr-005-black" target="_blank">$129</a> / <a href="https://wallhack.com/en-uk/products/cr-005-black" target="_blank">£99</a></p></td></tr></tbody></table></div><p>Yes, this is a glass pad on an article about control pads, and glass is usually as far from 'controlled' as you can imagine. The CR-005 that Wallhack has created, however, is a glass pad with "microscopic concave formations" that help slow things down.</p><p>However, it still doesn't quite match a good cloth control pad for, well, control. After breaking it in a little, I found it to be more speedy than the Zowie and even the Corsair. It's still not as fast as speed pads though, and the static friction is particularly nice for a glass pad. </p><p>The main benefit of going glass is that it should last a very long time, unlike a cloth pad which wears out pretty quickly. It will also have consistent friction and glide however hard you press into it. The downsides are not being able to roll it up, potentially <a href="https://www.pcgamer.com/hardware/gaming-mice/glass-mouse-pads-havent-won-me-over-but-gamer-sleeves-are-a-different-story/" target="_blank">having to wear a gaming sleeve to prevent your arm sticking</a>, having to replace your mouse skates more often as they get worn down, and having to wipe it down pretty frequently to keep dust away. </p><p>If it was a little slower and more controlled I think I'd make these sacrifices for the consistency and longevity of a glass pad, but it's just not quite there yet for control players compared to cloth. Saying that, even if it's not quite as slow as some cloth options, it's impressive that Wallhack has managed to make a glass pad as slow as this. It means glass pad lovers who play tac FPS need to miss out no longer.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Pulsar's new mouse is sliced in half to make it genuinely 'crazy-light' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>With mice sensors getting so ludicrously high-spec'd, some competitive gaming mouse brands are instead trying to make the shell as light as possible. Lighter = speedier. And Pulsar is finally joining the uber-lightweight mouse trend, with a 29 gram gaming mouse that is, well, half of a mouse. </p><p>Effectively, the new <a href="https://x.com/PulsarGears/status/2093238541098909712" target="_blank">X2F CrazyLight</a> is just the front half of a gaming mouse, including the sensors, switches, and battery. Pulsar is not the first to cut a gaming mouse in half (in fact, the <a href="https://shop.g-wolves.com/products/g-wolves-hsk-pro-4k" target="_blank">G-Wolves HSK Pro V2.0</a> has been around for a while and is just 26.8 g).</p><p>It's not even the first very light gaming mouse from Pulsar, with the <a href="https://www.pulsar.gg/products/x2-crazylight-gaming-mouse?srsltid=AfmBOopH8o6cjX3Hzqoy4IxUfk4OsNMsoKcU6pE3itgqNRctZnSTXKeb&variant=46176229687550" target="_blank">X2 CrazyLight Mini</a> being 35 g, but it is the lightest ever Pulsar mouse, to my knowledge. And it manages to get that weight without going for the honeycomb shell that many other lightweight competitors go for. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oo2MqW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oo2MqW.js" async></script><p><a href="https://x.com/PulsarGears/status/2093238541098909712" target="_blank">According to Pulsar</a>, the new X2F comes kitted with Pulsar's new SX2 sensor, which we don't currently have the stats for. The previous generation XS1 has a DPI of up to 32,000, a max speed of 750 IPS, and acceleration of 50 G. This is the sensor our Jacob Fox had his mitts on when he reviewed the <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x2-crazylight-medium-review/" target="_blank">X2 CrazyLight Medium</a> and <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">X3 Crazylight Mini</a>. It also supports up to 8,000 Hz polling. I would assume the XS2 ups some of those stats.</p><p>For context, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, which we consider to be the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> right now, has Razer's latest Focus Pro sensor and offers 50,000 DPI, with a max speed of 930 IPS, and acceleration of 90 G.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2093238541098909712"><p lang="en" dir="ltr">Pulsar LAB : X2F CrazylightSensor: XS2MCU: Nordic 54L15Switch: Pulsar OpticalEncoder: TTC GoldBattery: 210mAWeight: 29gSEPT 28th, 2026 pic.twitter.com/9MlWzFuLKz<a href="https://twitter.com/cantworkitout/status/2093238541098909712">August 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Alternatively, we think the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> is the best competitive mouse right now, and its Hero 2 sensor offers a DPI of 44,000, a max speed of 888 IPS, and a max acceleration of 88 G. </p><p>Whether or not the X2F CrazyLight will be the best competitive mouse after its release on September 28 will likely be a combination of how good the sensor is, how well balanced the weight is, and, of course, its price. Unfortunately, we don't have information on any of those yet. Also, even within the competitive mouse scene, it's sure to be pretty niche, since you have to use a fully fingertipped grip to use these kinds of mice.</p><p>We haven't got hands-on, so it's hard to say much more, but the only critique I could levy from looks (other than 'where's the rest of the mouse?') is that you can already see the 210 mA battery, so it's a shame it's not hot swappable. A hot-swappable battery could allow for a smaller battery in the device itself, further reducing the weight, and it's just a great way of staying charged at all times. Though that would presumably add on extra weight, which might defeat the purpose for this kind of mouse.</p><p>The notion of chopping off half of your gaming mouse to improve speed definitely feels a bit niche to me, but the fact that multiple companies are doing it implies there are many more competitively minded people than I otherwise thought. Let's just hope they aren't in my games. I prefer the easy opponents I'm currently being put up against. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/pulsars-new-mouse-is-sliced-in-half-to-make-it-genuinely-crazy-light/</link>
                                                                            <description>
                            <![CDATA[ 'I swear it came like that,' I say as I chew through half a mouse. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PF24B28XmgyXUtAnKnFGoj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Exe49LvuxSBXojwP4GK85n-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 28 Aug 2026 13:56:54 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Exe49LvuxSBXojwP4GK85n-1920-80.jpg">
                                                            <media:credit><![CDATA[Pulsar]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Pulsar X2F Crazylight gaming mouse on a yellow and orange gradient]]></media:description>                                                            <media:text><![CDATA[Pulsar X2F Crazylight gaming mouse on a yellow and orange gradient]]></media:text>
                                <media:title type="plain"><![CDATA[Pulsar X2F Crazylight gaming mouse on a yellow and orange gradient]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Exe49LvuxSBXojwP4GK85n-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With mice sensors getting so ludicrously high-spec'd, some competitive gaming mouse brands are instead trying to make the shell as light as possible. Lighter = speedier. And Pulsar is finally joining the uber-lightweight mouse trend, with a 29 gram gaming mouse that is, well, half of a mouse. </p><p>Effectively, the new <a href="https://x.com/PulsarGears/status/2093238541098909712" target="_blank">X2F CrazyLight</a> is just the front half of a gaming mouse, including the sensors, switches, and battery. Pulsar is not the first to cut a gaming mouse in half (in fact, the <a href="https://shop.g-wolves.com/products/g-wolves-hsk-pro-4k" target="_blank">G-Wolves HSK Pro V2.0</a> has been around for a while and is just 26.8 g).</p><p>It's not even the first very light gaming mouse from Pulsar, with the <a href="https://www.pulsar.gg/products/x2-crazylight-gaming-mouse?srsltid=AfmBOopH8o6cjX3Hzqoy4IxUfk4OsNMsoKcU6pE3itgqNRctZnSTXKeb&variant=46176229687550" target="_blank">X2 CrazyLight Mini</a> being 35 g, but it is the lightest ever Pulsar mouse, to my knowledge. And it manages to get that weight without going for the honeycomb shell that many other lightweight competitors go for. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oo2MqW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oo2MqW.js" async></script><p><a href="https://x.com/PulsarGears/status/2093238541098909712" target="_blank">According to Pulsar</a>, the new X2F comes kitted with Pulsar's new SX2 sensor, which we don't currently have the stats for. The previous generation XS1 has a DPI of up to 32,000, a max speed of 750 IPS, and acceleration of 50 G. This is the sensor our Jacob Fox had his mitts on when he reviewed the <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x2-crazylight-medium-review/" target="_blank">X2 CrazyLight Medium</a> and <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">X3 Crazylight Mini</a>. It also supports up to 8,000 Hz polling. I would assume the XS2 ups some of those stats.</p><p>For context, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, which we consider to be the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> right now, has Razer's latest Focus Pro sensor and offers 50,000 DPI, with a max speed of 930 IPS, and acceleration of 90 G.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2093238541098909712"><p lang="en" dir="ltr">Pulsar LAB : X2F CrazylightSensor: XS2MCU: Nordic 54L15Switch: Pulsar OpticalEncoder: TTC GoldBattery: 210mAWeight: 29gSEPT 28th, 2026 pic.twitter.com/9MlWzFuLKz<a href="https://twitter.com/cantworkitout/status/2093238541098909712">August 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Alternatively, we think the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> is the best competitive mouse right now, and its Hero 2 sensor offers a DPI of 44,000, a max speed of 888 IPS, and a max acceleration of 88 G. </p><p>Whether or not the X2F CrazyLight will be the best competitive mouse after its release on September 28 will likely be a combination of how good the sensor is, how well balanced the weight is, and, of course, its price. Unfortunately, we don't have information on any of those yet. Also, even within the competitive mouse scene, it's sure to be pretty niche, since you have to use a fully fingertipped grip to use these kinds of mice.</p><p>We haven't got hands-on, so it's hard to say much more, but the only critique I could levy from looks (other than 'where's the rest of the mouse?') is that you can already see the 210 mA battery, so it's a shame it's not hot swappable. A hot-swappable battery could allow for a smaller battery in the device itself, further reducing the weight, and it's just a great way of staying charged at all times. Though that would presumably add on extra weight, which might defeat the purpose for this kind of mouse.</p><p>The notion of chopping off half of your gaming mouse to improve speed definitely feels a bit niche to me, but the fact that multiple companies are doing it implies there are many more competitively minded people than I otherwise thought. Let's just hope they aren't in my games. I prefer the easy opponents I'm currently being put up against. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ AngryMiao AM Infinity.97 mouse review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="AngryMiao AngryMiao AM Infinity.97" data-widget-title=""></div><p>2026 is shaping up to be an immense year for high-end gaming mice, with everything from the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> to the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a> and the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair Sabre V2 Pro</a> proving genuine innovation, with everything from materials to speed and potency all covered off. </p><p>So when the AngryMiao AM Infinity.97 came across my desk promising a sub-50 g weight with a 30,000 DPI sensor, 8000 Hz wireless polling and some very innovative battery tech, it definitely piqued my interest.</p><p>AngryMiao is a brand I associate more with its keyboards than mice, with it having a penchant for the weird and wacky, opting for sci-fi-type designs in a similar vein to Gravastar. The AM Infinity.97 doesn't deviate from that formula, opting for a very holey chassis with an aggressive look all in the name of both lightness and standing out from a very crowded ultralight mouse market. </p><p>It's purposefully been designed to be smaller than other mice to shed weight while keeping things comfortable, shaving three percent off a 'standard' size, hence the 97 in its name—it refers to being 97% of a full mouse.</p><div  class="fancy-box"><div class="fancy_box-title">Infinity.97 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="r59z2zsii7vVB9kZD5oLEo" name="AngryMiao AM Infinity.97 PCG 9" caption="" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." src="https://cdn.mos.cms.futurecdn.net/r59z2zsii7vVB9kZD5oLEo-1920-80.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>Buttons: </strong>5<br><strong>Feet: </strong>PTFE<br><strong>Connectivity:</strong> 2.4 GHz receiver/Bluetooth, USB-C to USB-A wired<br><strong>Sensor: </strong>PixArt PAW3950<br><strong>Max DPI:</strong> 30,000<br><strong>Max acceleration: </strong>50 g<br><strong>Max speed: </strong>750 IPS<br><strong>Polling rate: </strong>8000 Hz (2.4 GHz)<br><strong>Battery life: </strong>Up to 165 hours<br><strong>RGB lighting: </strong>1-zone<br><strong>Warranty: </strong>1 year<br><strong>Price: </strong>$189</p></div></div><p>It's certainly an <em>interesting </em>aesthetic that's helped along in any case by the colour you choose: AngryMiao offers the AM Infinity.97 in black, white or pink. The one I was sent was white, which looks pleasant enough. At first, it seems like there aren't many places where your hand can make contact with the chassis, given the number of holes in the rodent, although you'd be surprised at how comfortable this mouse is when you get it in hand.</p><p>AngryMiao states this mouse is designed more for claw grippers than any other type, although I had no issues using a palm or fingertip grip over my couple of weeks with the device. It's a very comfortable rodent to use, and a sub-50 g weight (47 g with the battery) makes this one of the nimblest and lightest mice I've used this year. Take the battery out (more on that later), use it wired, and it can even go down to 39 g.</p><p>That lightness doesn't come at the cost of durability, either. The AM Infinity.97 is made of a magnesium-aluminium alloy chassis that feels sturdy to the touch, while the chassis is slightly contoured to fit well in hand and the cool sensation from the metal finish helps with comfort for long-term play sessions.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3YXuNmwiZg52J7V2TKrqDo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tm3LbxGDVr4AXCAdmmbTRo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The button placement here makes sense, with two main options and a scroll wheel on top, and navigation buttons on the side. On the underside is a selector switch between Bluetooth and 2.4 GHz wireless connectivity modes. There isn't a dedicated DPI switch button, which is a bit of a shame, nor is there anything like a DPI clutch on the side. It's functional, but a little minimal.</p><p>Nonetheless, I'm a fan of the custom TTC Orange Dot Optical V2 switches the brand has opted for for the AM Infinity.97's main mouse buttons. They've got a very snappy and positive feel under finger, plus have the benefit of being optical, so they're much faster than standard mechanical buttons.</p><p>Software duties are handled by a web-based UI and an associated downloadable executable that has the nasty habit of running in the background, potentially sapping away vital system resources. Otherwise, it's lightweight and easy to use, but is quite basic for duties such as setting DPI and polling rate, rebinding buttons, creating macros and profiles, setting parameters such as lift-off distance and acceleration, and that's about it. You get deeper customisation from rivals.</p><p>And now to where things matter: performance. AngryMiao has put a 30,000 DPI PixArt PAW3950 sensor inside the AM Infinity.97, which I've tested in other gaming mice over the years, and it provides ample sensitivity and responsiveness to make my usual test runs of Counter-Strike 2 a breeze. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dJBJ7mduWPmHswQuHwUECo-1920-80.png" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LJX3cyTFAumMcSycFPsbqn-1920-80.png" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/w9vskfseBoozCsSmGCGhY-1920-80.png" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">Future</small></figcaption></figure></figure><p>Admittedly, using the full 30,000 DPI on offer all the time is likely to be especially jittery, but you can move it down in software between 100 and the full 30,000 to get a more comfortable level. In my instance, that was between 1600 and 3200 DPI for more accurate aiming in Counter-Strike 2, and for more comfortable navigation in Windows.</p><p>Connectivity is handled either by Bluetooth or 2.4 GHz, with the latter supporting the 8000 Hz wireless polling rate. The fact that this mouse also comes with Bluetooth adds some versatility against the competition from the likes of Corsair, which eschews that in favour of outright performance in one device. I found the mouse's connection over either method to be reliable and stable, using Bluetooth on my MacBook Pro and the bundled receiver on my Windows gaming PC.</p><p>8000 Hz wireless polling is becoming more of a given at this higher end of the market, rather than just a nice-to-have, and it's present over both wired and 2.4 GHz use. It can be controlled in software for balancing endurance and potency, especially for pro players who are more likely to feel the benefit than us normal folk. It translates to added responsiveness and potentially lower latency, as a higher polling rate means a device reports its position and inputs more frequently (hence Hz as the measurement). </p><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="45fruY5vyZzD3afkNZoXCo" name="AngryMiao AM Infinity.97 PCG 8" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." src="https://cdn.mos.cms.futurecdn.net/45fruY5vyZzD3afkNZoXCo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The combination of the lightweight, compact chassis and potent internals makes the AM Infinity.97 easily one of the most responsive gaming mice I've ever tested, alongside Razer's Viper V4 Pro and the Logitech G Pro X2 Superstrike. It sticks with Razer's idea of doing the basics well, rather than adding haptics and rapid trigger as Logitech does, but makes a fantastic first impression.</p><p>Its flagship PixArt sensor feels accurate, while its low mass makes wrist flicks and sweeping movements in CS:2 very easy, plus the optical switches translate to very brisk inputs even without any of the other tech Logitech has packed into its option. This is a rodent that nails the basics to make it a very potent all-rounder.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CdWDKzV92thnBZeYVkgHFo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nnzQsDkczX6xrHETDCrRGo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Jsd3RkhzYAXn9N9swu9XEo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vteNv8zw5PpLhVrF4zZxDo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I realise I've gotten all the way through this copy and have failed to mention the coolest aspect of the AM Infinity.97, which is its swappable batteries. Okay, we've seen this before in headsets and more recently in mice such as the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">Glorious Model O3 Wireless</a>, but the way AngryMiao does it is a little different. </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 flagship-level performance: </strong>The AM Infinity.97 delivers some of the most responsive, accurate performance of any mouse I've tested this year, backed by a genuinely clever swappable battery system.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You want polished software or a lower price:</strong> The companion app is basic and prone to running in the background, and at $189 you're paying a premium over rivals that perform just as well.</p></div></div><p>The batteries are magnetically attached to the underside of the chassis and clip off when needed—it can then be replaced with a spare that's found inside the 8000 Hz USB-C wireless receiver box. Plus, this mouse can also work wired, so you aren't left in the lurch when a battery dies. Unfortunately. I don't think there's a spare backup internal cell, which would allow you to keep playing even if both batteries are dead, which is one area where Glorious wins.</p><p>As for battery life, AngryMiao quotes the AM Infinity.97 to last for up to an 'infinite' amount of time, given the swappable battery system, although that is marketing optimism at its finest. Meanwhile, back on planet Earth, I was getting between 20 and 30 hours on a single battery with 8000 Hz polling enabled, leading to an effective endurance of between 40 and 60 hours with this rodent at full pelt. Drop down to 1000 Hz, and AngryMiao says you'll get up to 165 hours of use, proving how demanding 8000 Hz can be for the 340 mAh cells inside.</p><p>And now we come to the interesting bit: price. The AM Infinity.97 retails for $189, putting it well towards the top end of the ultralight gaming rodent market against some of the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a> m'colleagues have tested. For reference, the Logitech G Pro X2 Superstrike costs $180, and the Razer Viper V4 Pro costs $160 in freedom eagle currency, making this boutique option the dearest of the lot. </p><p>That makes it a tougher sell on value alone. But if you want a mouse that looks and feels like nothing else on the market, backed by genuinely excellent core performance, AngryMiao has built something worth the premium—you're just paying for the privilege of being different. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/angrymiao-am-infinity-97-mouse-review/</link>
                                                                            <description>
                            <![CDATA[ Flagship speed, boutique flair. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WMXAonUQQtoWEioUkjrHQ9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JFKjNACJuiQRvtSxGHrSRo-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 19 Aug 2026 12:20:28 +0000</pubDate>                                                                                                                                <updated>Thu, 20 Aug 2026 09:20:12 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Reece Bithrey ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DN8S8rM2Gfi7mBgPBtt3eb-320-70.jpg ]]></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/JFKjNACJuiQRvtSxGHrSRo-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The AngryMiao AM Infinity.97 gaming mouse in hand for testing.]]></media:description>                                                            <media:text><![CDATA[The AngryMiao AM Infinity.97 gaming mouse in hand for testing.]]></media:text>
                                <media:title type="plain"><![CDATA[The AngryMiao AM Infinity.97 gaming mouse in hand for testing.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JFKjNACJuiQRvtSxGHrSRo-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="AngryMiao AngryMiao AM Infinity.97" data-widget-title=""></div><p>2026 is shaping up to be an immense year for high-end gaming mice, with everything from the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> to the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a> and the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair Sabre V2 Pro</a> proving genuine innovation, with everything from materials to speed and potency all covered off. </p><p>So when the AngryMiao AM Infinity.97 came across my desk promising a sub-50 g weight with a 30,000 DPI sensor, 8000 Hz wireless polling and some very innovative battery tech, it definitely piqued my interest.</p><p>AngryMiao is a brand I associate more with its keyboards than mice, with it having a penchant for the weird and wacky, opting for sci-fi-type designs in a similar vein to Gravastar. The AM Infinity.97 doesn't deviate from that formula, opting for a very holey chassis with an aggressive look all in the name of both lightness and standing out from a very crowded ultralight mouse market. </p><p>It's purposefully been designed to be smaller than other mice to shed weight while keeping things comfortable, shaving three percent off a 'standard' size, hence the 97 in its name—it refers to being 97% of a full mouse.</p><div  class="fancy-box"><div class="fancy_box-title">Infinity.97 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="r59z2zsii7vVB9kZD5oLEo" name="AngryMiao AM Infinity.97 PCG 9" caption="" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." src="https://cdn.mos.cms.futurecdn.net/r59z2zsii7vVB9kZD5oLEo-1920-80.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>Buttons: </strong>5<br><strong>Feet: </strong>PTFE<br><strong>Connectivity:</strong> 2.4 GHz receiver/Bluetooth, USB-C to USB-A wired<br><strong>Sensor: </strong>PixArt PAW3950<br><strong>Max DPI:</strong> 30,000<br><strong>Max acceleration: </strong>50 g<br><strong>Max speed: </strong>750 IPS<br><strong>Polling rate: </strong>8000 Hz (2.4 GHz)<br><strong>Battery life: </strong>Up to 165 hours<br><strong>RGB lighting: </strong>1-zone<br><strong>Warranty: </strong>1 year<br><strong>Price: </strong>$189</p></div></div><p>It's certainly an <em>interesting </em>aesthetic that's helped along in any case by the colour you choose: AngryMiao offers the AM Infinity.97 in black, white or pink. The one I was sent was white, which looks pleasant enough. At first, it seems like there aren't many places where your hand can make contact with the chassis, given the number of holes in the rodent, although you'd be surprised at how comfortable this mouse is when you get it in hand.</p><p>AngryMiao states this mouse is designed more for claw grippers than any other type, although I had no issues using a palm or fingertip grip over my couple of weeks with the device. It's a very comfortable rodent to use, and a sub-50 g weight (47 g with the battery) makes this one of the nimblest and lightest mice I've used this year. Take the battery out (more on that later), use it wired, and it can even go down to 39 g.</p><p>That lightness doesn't come at the cost of durability, either. The AM Infinity.97 is made of a magnesium-aluminium alloy chassis that feels sturdy to the touch, while the chassis is slightly contoured to fit well in hand and the cool sensation from the metal finish helps with comfort for long-term play sessions.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3YXuNmwiZg52J7V2TKrqDo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tm3LbxGDVr4AXCAdmmbTRo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The button placement here makes sense, with two main options and a scroll wheel on top, and navigation buttons on the side. On the underside is a selector switch between Bluetooth and 2.4 GHz wireless connectivity modes. There isn't a dedicated DPI switch button, which is a bit of a shame, nor is there anything like a DPI clutch on the side. It's functional, but a little minimal.</p><p>Nonetheless, I'm a fan of the custom TTC Orange Dot Optical V2 switches the brand has opted for for the AM Infinity.97's main mouse buttons. They've got a very snappy and positive feel under finger, plus have the benefit of being optical, so they're much faster than standard mechanical buttons.</p><p>Software duties are handled by a web-based UI and an associated downloadable executable that has the nasty habit of running in the background, potentially sapping away vital system resources. Otherwise, it's lightweight and easy to use, but is quite basic for duties such as setting DPI and polling rate, rebinding buttons, creating macros and profiles, setting parameters such as lift-off distance and acceleration, and that's about it. You get deeper customisation from rivals.</p><p>And now to where things matter: performance. AngryMiao has put a 30,000 DPI PixArt PAW3950 sensor inside the AM Infinity.97, which I've tested in other gaming mice over the years, and it provides ample sensitivity and responsiveness to make my usual test runs of Counter-Strike 2 a breeze. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dJBJ7mduWPmHswQuHwUECo-1920-80.png" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LJX3cyTFAumMcSycFPsbqn-1920-80.png" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/w9vskfseBoozCsSmGCGhY-1920-80.png" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">Future</small></figcaption></figure></figure><p>Admittedly, using the full 30,000 DPI on offer all the time is likely to be especially jittery, but you can move it down in software between 100 and the full 30,000 to get a more comfortable level. In my instance, that was between 1600 and 3200 DPI for more accurate aiming in Counter-Strike 2, and for more comfortable navigation in Windows.</p><p>Connectivity is handled either by Bluetooth or 2.4 GHz, with the latter supporting the 8000 Hz wireless polling rate. The fact that this mouse also comes with Bluetooth adds some versatility against the competition from the likes of Corsair, which eschews that in favour of outright performance in one device. I found the mouse's connection over either method to be reliable and stable, using Bluetooth on my MacBook Pro and the bundled receiver on my Windows gaming PC.</p><p>8000 Hz wireless polling is becoming more of a given at this higher end of the market, rather than just a nice-to-have, and it's present over both wired and 2.4 GHz use. It can be controlled in software for balancing endurance and potency, especially for pro players who are more likely to feel the benefit than us normal folk. It translates to added responsiveness and potentially lower latency, as a higher polling rate means a device reports its position and inputs more frequently (hence Hz as the measurement). </p><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="45fruY5vyZzD3afkNZoXCo" name="AngryMiao AM Infinity.97 PCG 8" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." src="https://cdn.mos.cms.futurecdn.net/45fruY5vyZzD3afkNZoXCo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The combination of the lightweight, compact chassis and potent internals makes the AM Infinity.97 easily one of the most responsive gaming mice I've ever tested, alongside Razer's Viper V4 Pro and the Logitech G Pro X2 Superstrike. It sticks with Razer's idea of doing the basics well, rather than adding haptics and rapid trigger as Logitech does, but makes a fantastic first impression.</p><p>Its flagship PixArt sensor feels accurate, while its low mass makes wrist flicks and sweeping movements in CS:2 very easy, plus the optical switches translate to very brisk inputs even without any of the other tech Logitech has packed into its option. This is a rodent that nails the basics to make it a very potent all-rounder.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CdWDKzV92thnBZeYVkgHFo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nnzQsDkczX6xrHETDCrRGo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Jsd3RkhzYAXn9N9swu9XEo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vteNv8zw5PpLhVrF4zZxDo-1920-80.jpg" alt="The AngryMiao AM Infinity.97 gaming mouse in hand for testing." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I realise I've gotten all the way through this copy and have failed to mention the coolest aspect of the AM Infinity.97, which is its swappable batteries. Okay, we've seen this before in headsets and more recently in mice such as the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">Glorious Model O3 Wireless</a>, but the way AngryMiao does it is a little different. </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 flagship-level performance: </strong>The AM Infinity.97 delivers some of the most responsive, accurate performance of any mouse I've tested this year, backed by a genuinely clever swappable battery system.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You want polished software or a lower price:</strong> The companion app is basic and prone to running in the background, and at $189 you're paying a premium over rivals that perform just as well.</p></div></div><p>The batteries are magnetically attached to the underside of the chassis and clip off when needed—it can then be replaced with a spare that's found inside the 8000 Hz USB-C wireless receiver box. Plus, this mouse can also work wired, so you aren't left in the lurch when a battery dies. Unfortunately. I don't think there's a spare backup internal cell, which would allow you to keep playing even if both batteries are dead, which is one area where Glorious wins.</p><p>As for battery life, AngryMiao quotes the AM Infinity.97 to last for up to an 'infinite' amount of time, given the swappable battery system, although that is marketing optimism at its finest. Meanwhile, back on planet Earth, I was getting between 20 and 30 hours on a single battery with 8000 Hz polling enabled, leading to an effective endurance of between 40 and 60 hours with this rodent at full pelt. Drop down to 1000 Hz, and AngryMiao says you'll get up to 165 hours of use, proving how demanding 8000 Hz can be for the 340 mAh cells inside.</p><p>And now we come to the interesting bit: price. The AM Infinity.97 retails for $189, putting it well towards the top end of the ultralight gaming rodent market against some of the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a> m'colleagues have tested. For reference, the Logitech G Pro X2 Superstrike costs $180, and the Razer Viper V4 Pro costs $160 in freedom eagle currency, making this boutique option the dearest of the lot. </p><p>That makes it a tougher sell on value alone. But if you want a mouse that looks and feels like nothing else on the market, backed by genuinely excellent core performance, AngryMiao has built something worth the premium—you're just paying for the privilege of being different. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Naga V3 Pro review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Razer Naga V3 Pro" data-widget-title=""></div><p>Razer's Naga series has always been a bit eye-catching. Slapping tens of buttons on a gaming mouse will naturally make it stand out in the looks department, but having owned two Nagas in my lifetime, I can see it only really takes an evening to get why people love 'em. </p><p>MMOs are notorious for demanding lots of shortcuts and macros, and it's just not feasible on most keyboards to reach over to the nine key every thirty seconds. When considering the hundreds of hours MMOs tend to eat up, that's an awful lot of stretching time. You can make do with custom controls, but MMO mice offer not only out-of-the-box usability, but specifically crafted ergonomics. </p><p>The Naga V3 Pro follows on pretty routinely from its predecessor with the exact same dimensions, but a lighter weight and different internals. As such, it's a pretty by-the-numbers upgrade and will fit at home in the palms of a Naga V2 Pro owner. But is it really worth $180 just to get a better sensor, cleaner clicks, and doubleshot moulded keycaps? The answer for anyone but the most hardcore (and well-off) MMO gamers is 'probably not, but it's pretty neat anyway'.</p><p>And still, I'd say it's the nicest MMO mouse I've ever used. Thanks to the addition of a love-it-or-hate-it switch sound (I personally quite dislike the noise), it's not the best in every single compartment, but taking it for a spin in all manner of games shows it's no slouch in even non-MMO use cases, and for its price, it's gotta be. </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 play lots of MMOs, but not all the time: </strong>Thanks to easy-to-use and well-built faceplates, this functions well as an everyday mouse too</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 have a Naga V2 Pro: </strong>Though it's certainly an upgrade, it's a relatively straightforward one, and not something I'd pay $200 for. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Razer Naga V3 Pro vs Naga V2 Pro</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Naga V3 Pro</strong></p></td><td  ><p><strong>Naga V2 Pro</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>Razer Focus Pro 50K Optical Sensor Gen </p></td><td  ><p>Razer Focus Pro 30K Optical Sensor</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired and Wireless (Bluetooth or 2.4 GHz)</p></td><td  ><p>Wired and Wireless (Bluetooth or 2.4 GHz)</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Optical Mouse Switches Gen-4</p></td><td  ><p>Optical Mouse Switches Gen-3</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>1,000 Hz (up to 8,000 Hz with Mouse Dock Pro or HyperPolling dongle)</p></td><td  ><p>1000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>DPI</strong></p></td><td  ><p>Up to 50,000</p></td><td  ><p>Up to 30,000</p></td></tr><tr><td class="firstcol " ><p><strong>Acceleration</strong></p></td><td  ><p>90 G</p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>930 IPS</p></td><td  ><p>750 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>RGB</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>112 g at lightest and 117 g at heaviest</p></td><td  ><p>134 g</p></td></tr><tr><td class="firstcol " ><p><strong>Battery Life</strong></p></td><td  ><p>Up to 155 Hours on HyperSpeed</p></td><td  ><p>Up to 150 hours on HyperSpeed</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.razer.com/gaming-mice/razer-naga-v3-pro?srsltid=AfmBOopYIK-QzeGQrZ5Exr0dihQWMd0mtypWZGwS8w8yEqzKD5Dg4rhQ" target="_blank">$180</a> | £180 | €200</p></td><td  ><p>$180 | £180 | €200</p></td></tr></tbody></table></div><p>Being very similar to the Naga V2 Pro, you likely won't be shocked by the V3 Pro's solid feature set. It comes with three faceplates with different button layouts: twelve, six, and two. Being magnetic and super easy to swap out, the point is to flit between button layouts depending on your game. </p><p>The 12 button layout is perfect for Final Fantasy 14, making it easy to control all major skills, plus a few extra from the mouse. Elder Scrolls Online, with its smaller pool of skills, is best fitted for the six button layout. Then, for shooters and everyday use, the two button setup is king. </p><p>Its raw specs are super solid, with a max DPI of 50,000, speed of 930 IPS, and both an optical sensor and optical switches. It only comes with 1,000 Hz polling out of the box (though you can pay extra, via the Mouse Dock Pro or HyperPolling dongle, for 8,000 Hz), and though 8,000 Hz is unnecessary for most people, I still would have expected the option at this price point. </p><p>Even without the 12-button faceplate, the V3 Pro is loaded with extra buttons: two DPI switches on the left click, two under the scroll wheel, and one on the right-hand side. Even with just the two-button faceplate, you have 13 different buttons to play with overall. </p><p>The Naga V3 Pro is kitted with some other neat features, too, like its Hyperscroll Tilt Wheel Gen 2, which is one of the best scroll wheels I've used. You can scroll it without any nasty notching, or you can set nice notches for better precision in Razer's Synapse software. I like a little bit of both.  Notches, but it'll spin freely if I go HAM. The wheel can be pushed to the left and right, which is neat for scrolling particularly big webpages, or, in my case, scrolling the timeline in DaVinci Resolve. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/7gWhHzQpX8E5uyCdJUUyiP-1920-80.jpg" alt="The Razer Naga V3 Pro in a hand, from the back right" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sPiW4daSqrj4CdLo85U7ZP-1920-80.jpg" alt="The Razer Naga V3 Pro in a hand, from the top" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It's probably no surprise to you that the mouse with 23 buttons has a dedicated AI button, it being 2026 and all, but I swiftly swapped that out for a different control and never looked back. </p><p>Also, being 2026, you are getting the option to swap between wired and wireless (Bluetooth or 2.4 GHz), and the box comes with a USB Type-A to USB Type-C connector, which is a solid extra. The dongle, without the adapter, plugs in via USB Type-A. You aren't getting a wireless charger or charging dock with the Naga V3 Pro, but the 155 hours of battery life is enough that most users would only need to charge it every month or so. </p><p>If that battery life is more than you were expecting, you have Razer's FrameSync technology to thank. As <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">we've explained before</a>, think of it sort of like what G-Sync or any variable refresh rate tech does. It synchronises the hardware with the polling from your system, which means it only captures as much as is necessary for low latency. In turn, it becomes more efficient and drains the battery less. In case you're worried (and spoilers for the performance section), I found the sensor to perform very well. </p><h3 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hVcCySat5wHF4heM3wJwvP" name="IMG_0203" alt="The Razer Naga V3 Pro, its three faceplate, and the connector on a wooden table" src="https://cdn.mos.cms.futurecdn.net/hVcCySat5wHF4heM3wJwvP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Naga V3 Pro is a rather heavy beast (though lighter than its predecessor), being 112 g at its very lightest. It balances the weight well. With a very slight curve in the faceplate, it's easy to pick up with my thumb, and a groove for the ring finger on the right-hand side makes it a very accommodating shape for my rather large hands. The faceplates are well designed too, with the 12-button one curving inwards around the middle of the numberpad to give a natural groove to place the thumb. This groove also allows me to find my place without having to look at the mouse.</p><p>Importantly, that weight actually gives the Naga V3 Pro a great sense of comfort. Given you will be spending a lot of time hitting the left-hand side with your thumb, it has to be steady to avoid misclicks and poor aim in the middle of a game, and it does it well. The mouse feet are plenty smooth, and all buttons are easy to hit. </p><p>Thanks likely in part to its weight, the V3 Pro is a very sturdy mouse too, and one I wasn't afraid of breaking if it dropped off my desk. In fact, with a small compartment under the faceplate for the 2.4 GHz receiver, it's a decent mouse to throw in a backpack and use on the go too. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="N2jN5GDWbwqAafb9wd6rqP" name="IMG_0205" alt="The Razer Naga V3 Pro without its faceplate, with the connector inside" src="https://cdn.mos.cms.futurecdn.net/N2jN5GDWbwqAafb9wd6rqP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Though it takes a little time to get used to, the 12-button plate is far easier to use than you might otherwise think. With it counting up in threes, it's pretty easy to remember which number is which if you know your times tables, and muscle memory started to form for me very quickly. </p><p>The six-button and two-button faceplates are a little high for my liking, being near the top of the faceplate, but both have clearly defined buttons. The six-button layout also has a curve into the middle, which is great for finding a position for your thumb. </p><p>Given the button for the ring finger on the right-hand side, there's a specific way that you should hold the Naga V3 Pro to take advantage of its shape. The claw grip and fingertip grip both feel a tad awkward, but the palm grip feels perfect to me. The mouse holds the fingers well, and is well balanced to allow me to easily hit all of its buttons. </p><h3 class="article-body__section" id="section-performance"><span>Performance</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/n5AjozZwseHpFP4Fx8552Q-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the bottom, next to its faceplates" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3GmGvPS8MbEEGqFdL67KxP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the back left" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/F3uEAdBkLPSLENpuEpcdvP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the side, with the mouse upside down" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One of the biggest differences between the Naga V2 Pro and V3 Pro is in the 50,000 DPI optical sensor, and it performs really well. It's snappy, smooth, accurate, and is the same sensor used in the incredible <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/">Viper V4 Pro</a>. Naturally, the added weight means you aren't getting competitive-level speed from physically moving the mouse, but its sensor is top-notch. </p><p>One place it does fall significantly under the Viper V4 Pro is in its polling rate, with the Naga V3 Pro reaching a max 1,000 Hz polling out of the box. You can pay extra to get 8,000 Hz via the Mouse Dock Pro or HyperPolling dongle, but I'd argue it's not worth the extra price and hit to battery life for that polling rate, especially when the Naga V3 Pro is already plenty expensive. </p><p>In Final Fantasy 14, I found the Naga V3 Pro to be a genuine boon to gameplay, allowing me to hit almost every key I want without having to stretch, and without even customising the mouse. With some smart custom controls, I managed to make the mouse even more useful in-game, with the ring finger button opening the map, and the click under the scroll wheel opening inventory. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zJsH6RW63CVBGLCQQCcEzP" name="IMG_0213" alt="The Razer Naga V3 Pro on a wooden table" src="https://cdn.mos.cms.futurecdn.net/zJsH6RW63CVBGLCQQCcEzP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div><blockquote><p>Given its weight, I was concerned it would feel a tad sluggish in Counter-Strike 2, but I was happily proven wrong</p></blockquote></div><p>Given its weight, I was concerned it would feel a tad sluggish in Counter-Strike 2, but I was happily proven wrong. It certainly requires a bit more effort than a super light mouse, but I found myself more accurate holding down lines of sight.</p><p>The optical switches in the Naga V3 Pro are immense, being both accurate and feeling great under the finger. In fact, all of the buttons on the mouse perform really well, and it's clear how much thought has been put into feel and function. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/R4jXnNhcekAXsfn8dyLnzC-1920-80.png" alt="Razer Naga V3 Pro MouseTester result: " /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tjw5BFZFtS9sdyoqjdGbyC-1920-80.png" alt="Razer Naga V3 Pro MouseTester result: " /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JLfYyXaVFff72n7iiyj9zC-1920-80.png" alt="Razer Naga V3 Pro MouseTester result: " /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure></figure><p>But my biggest gripe with the Gen 4 optical switches under the left and right click is that I really dislike their sound. Both of them have a high-pitched, plastic-sounding ping that is near shrill to my ears. At a distance, it's fine, though a little loud, but clicking away at them all day for both games and work has driven home how much I dislike the sound of Razer's latest switch tech. </p><p>In fact, I had the chance to mess around with the <a href="https://www.razer.com/hk-en/gaming-mice/razer-basilisk-v3-pro?srsltid=AfmBOorjwFTDOy9vvq12jGRQZ1mDj7it4NlbtDFNCskHmaWP31joUscG" target="_blank">Basilisk V3 Pro</a> and its older Gen 3 switches, and I think the sound is so annoying that I'd almost pick those switches instead. </p><h3 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xnqip6yWUMJocx5tRWHheP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fQP8caEzApctMkKshLsQuP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the front" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It might seem like a tough challenge to make a 23-button mouse look good, but actually I think Razer has nailed it with the Naga V3 Pro, much like it nailed it with the Naga V2 Pro. There are better-looking, sleeker mice out there, but none that hold so many buttons, and visually, I think it's leagues ahead of Corsair's blocky <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review/" target="_blank">Scimitar Elite Wireless SE</a> (which is also an MMO mouse). </p><p>The side buttons, plus scroll wheel and base, have RGB lighting in them, which is customisable in Razer's software. They do a good job complementing the black of the rest of the mouse, and even look decent when turned off. </p><h3 class="article-body__section" id="section-software"><span>Software</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HpYUC8ZpnPzJDVJiuK9YD7-1920-80.jpg" alt="Razer Synapse software, showing off the Naga V3 Pro and its custom buttons" /><figcaption><small role="credit">Razer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fwArFE6DfR4MNqKevx8jZD-1920-80.jpg" alt="Razer Synapse software, showing off the Naga V3 Pro and its performance tab" /><figcaption><small role="credit">Razer</small></figcaption></figure></figure><div><blockquote><p>In the first hour or so, the profile system did fail, but after a reset, it has not had any problems since. </p></blockquote></div><p>Razer's software, like software from most major hardware brands, has always been inconsistent for me, but Synapse has worked almost perfectly in my time with the mouse. In the first hour or so, the profile system did fail (with it taking forever to save a profile), but after a reset, it has not had any problems since. </p><p>You can use it to customise RGB, swap between polling rates and DPI, and most importantly, you can swap what all of those buttons do. It's all rather intuitive and easy-to-use, and my only other complaint is that the web software doesn't yet support the Naga V3 Pro (or most of Razer's mice, for what it's worth).</p><p>Thanks to the breadth of buttons, I finally found a use for profiles. Though I'm happy to have them, I rarely use multiple profiles on my gaming mouse, but one profile is my everyday profile, another is for MMOs, and the last is for shooters. For the most part, swapping profiles mostly just changes what the 12 buttons on the faceplate do, but they also change the sensitivity of the scroll wheel's free scroll function. </p><h3 class="article-body__section" id="section-value"><span>Value </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zJsH6RW63CVBGLCQQCcEzP" name="IMG_0213" alt="The Razer Naga V3 Pro on a wooden table" src="https://cdn.mos.cms.futurecdn.net/zJsH6RW63CVBGLCQQCcEzP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The first time I heard the Naga V3 Pro's price point, I heard myself exhale a little too loudly. $180 is so much money, and though it is using the latest Razer sensor, it is at just a standard polling rate. And the Viper V4 Pro has the latest sensor and switches, plus it's a lot lighter, offers 8,000 Hz polling out of the box.  And is still $20 cheaper. </p><p>Then, if you're looking for an MMO mouse, Corsair's Scimitar Elite Wireless SE is $40 less at MSRP, but is regularly less than half the price of the Naga V3 Pro. Giving it 89% in our review, it is currently our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-mmo-gaming-mouse" target="_blank">best MMO gaming mouse</a>. It doesn't have a swappable faceplate, but it has chunkier side buttons that are designed to work as a mini Stream Deck. </p><p>And if you're willing to go more budget, the likes of the Naga V2 Hyperspeed is often under half the price of the Naga V3 Pro, and comes with the same scroll wheel technology (though last gen), Razer's 30K optical sensor, and 250 hours of battery life (though it uses swappable batteries). You aren't getting the swappable faceplates and the latest sensor, but for all intents and purposes, it's still a very solid MMO mouse. </p><p>So, for the same price, you could pick up a Naga V3 Pro alongside <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair's uber lightweight Sabre V2 Pro</a>, four and a half <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2 Pros</a>, or just under 14 months of Final Fantasy 14. And that is a heavy price to stomach for any gaming mouse, even though the Naga V3 Pro is genuinely great. </p><p>If you are someone who occasionally plays MMOs, I don't think the Naga V3 Pro is necessarily for you, but if you want the best and play Final Fantasy 14 like it's your second job, I don't think I'd be recommending anything else. Though I would probably recommend cranking the speakers loud enough to drown out the clicks. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/razer-naga-v3-pro-review/</link>
                                                                            <description>
                            <![CDATA[ An upgrade in pretty much every way (if you ignore the audible ping of the switches). ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VoC7Nefyvxfz8vx7DkQY6G</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bxiLAwj2yKPCob3YQrKmwP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 18 Aug 2026 09:18:44 +0000</pubDate>                                                                                                                                <updated>Wed, 19 Aug 2026 12:24:05 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bxiLAwj2yKPCob3YQrKmwP-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Razer Naga V3 Pro on a wooden table from the left hand side, showing the 12 button faceplate]]></media:description>                                                            <media:text><![CDATA[The Razer Naga V3 Pro on a wooden table from the left hand side, showing the 12 button faceplate]]></media:text>
                                <media:title type="plain"><![CDATA[The Razer Naga V3 Pro on a wooden table from the left hand side, showing the 12 button faceplate]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bxiLAwj2yKPCob3YQrKmwP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Razer Naga V3 Pro" data-widget-title=""></div><p>Razer's Naga series has always been a bit eye-catching. Slapping tens of buttons on a gaming mouse will naturally make it stand out in the looks department, but having owned two Nagas in my lifetime, I can see it only really takes an evening to get why people love 'em. </p><p>MMOs are notorious for demanding lots of shortcuts and macros, and it's just not feasible on most keyboards to reach over to the nine key every thirty seconds. When considering the hundreds of hours MMOs tend to eat up, that's an awful lot of stretching time. You can make do with custom controls, but MMO mice offer not only out-of-the-box usability, but specifically crafted ergonomics. </p><p>The Naga V3 Pro follows on pretty routinely from its predecessor with the exact same dimensions, but a lighter weight and different internals. As such, it's a pretty by-the-numbers upgrade and will fit at home in the palms of a Naga V2 Pro owner. But is it really worth $180 just to get a better sensor, cleaner clicks, and doubleshot moulded keycaps? The answer for anyone but the most hardcore (and well-off) MMO gamers is 'probably not, but it's pretty neat anyway'.</p><p>And still, I'd say it's the nicest MMO mouse I've ever used. Thanks to the addition of a love-it-or-hate-it switch sound (I personally quite dislike the noise), it's not the best in every single compartment, but taking it for a spin in all manner of games shows it's no slouch in even non-MMO use cases, and for its price, it's gotta be. </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 play lots of MMOs, but not all the time: </strong>Thanks to easy-to-use and well-built faceplates, this functions well as an everyday mouse too</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 have a Naga V2 Pro: </strong>Though it's certainly an upgrade, it's a relatively straightforward one, and not something I'd pay $200 for. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Razer Naga V3 Pro vs Naga V2 Pro</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Naga V3 Pro</strong></p></td><td  ><p><strong>Naga V2 Pro</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>Razer Focus Pro 50K Optical Sensor Gen </p></td><td  ><p>Razer Focus Pro 30K Optical Sensor</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired and Wireless (Bluetooth or 2.4 GHz)</p></td><td  ><p>Wired and Wireless (Bluetooth or 2.4 GHz)</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Optical Mouse Switches Gen-4</p></td><td  ><p>Optical Mouse Switches Gen-3</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>1,000 Hz (up to 8,000 Hz with Mouse Dock Pro or HyperPolling dongle)</p></td><td  ><p>1000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>DPI</strong></p></td><td  ><p>Up to 50,000</p></td><td  ><p>Up to 30,000</p></td></tr><tr><td class="firstcol " ><p><strong>Acceleration</strong></p></td><td  ><p>90 G</p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>930 IPS</p></td><td  ><p>750 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>RGB</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>112 g at lightest and 117 g at heaviest</p></td><td  ><p>134 g</p></td></tr><tr><td class="firstcol " ><p><strong>Battery Life</strong></p></td><td  ><p>Up to 155 Hours on HyperSpeed</p></td><td  ><p>Up to 150 hours on HyperSpeed</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.razer.com/gaming-mice/razer-naga-v3-pro?srsltid=AfmBOopYIK-QzeGQrZ5Exr0dihQWMd0mtypWZGwS8w8yEqzKD5Dg4rhQ" target="_blank">$180</a> | £180 | €200</p></td><td  ><p>$180 | £180 | €200</p></td></tr></tbody></table></div><p>Being very similar to the Naga V2 Pro, you likely won't be shocked by the V3 Pro's solid feature set. It comes with three faceplates with different button layouts: twelve, six, and two. Being magnetic and super easy to swap out, the point is to flit between button layouts depending on your game. </p><p>The 12 button layout is perfect for Final Fantasy 14, making it easy to control all major skills, plus a few extra from the mouse. Elder Scrolls Online, with its smaller pool of skills, is best fitted for the six button layout. Then, for shooters and everyday use, the two button setup is king. </p><p>Its raw specs are super solid, with a max DPI of 50,000, speed of 930 IPS, and both an optical sensor and optical switches. It only comes with 1,000 Hz polling out of the box (though you can pay extra, via the Mouse Dock Pro or HyperPolling dongle, for 8,000 Hz), and though 8,000 Hz is unnecessary for most people, I still would have expected the option at this price point. </p><p>Even without the 12-button faceplate, the V3 Pro is loaded with extra buttons: two DPI switches on the left click, two under the scroll wheel, and one on the right-hand side. Even with just the two-button faceplate, you have 13 different buttons to play with overall. </p><p>The Naga V3 Pro is kitted with some other neat features, too, like its Hyperscroll Tilt Wheel Gen 2, which is one of the best scroll wheels I've used. You can scroll it without any nasty notching, or you can set nice notches for better precision in Razer's Synapse software. I like a little bit of both.  Notches, but it'll spin freely if I go HAM. The wheel can be pushed to the left and right, which is neat for scrolling particularly big webpages, or, in my case, scrolling the timeline in DaVinci Resolve. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/7gWhHzQpX8E5uyCdJUUyiP-1920-80.jpg" alt="The Razer Naga V3 Pro in a hand, from the back right" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sPiW4daSqrj4CdLo85U7ZP-1920-80.jpg" alt="The Razer Naga V3 Pro in a hand, from the top" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It's probably no surprise to you that the mouse with 23 buttons has a dedicated AI button, it being 2026 and all, but I swiftly swapped that out for a different control and never looked back. </p><p>Also, being 2026, you are getting the option to swap between wired and wireless (Bluetooth or 2.4 GHz), and the box comes with a USB Type-A to USB Type-C connector, which is a solid extra. The dongle, without the adapter, plugs in via USB Type-A. You aren't getting a wireless charger or charging dock with the Naga V3 Pro, but the 155 hours of battery life is enough that most users would only need to charge it every month or so. </p><p>If that battery life is more than you were expecting, you have Razer's FrameSync technology to thank. As <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">we've explained before</a>, think of it sort of like what G-Sync or any variable refresh rate tech does. It synchronises the hardware with the polling from your system, which means it only captures as much as is necessary for low latency. In turn, it becomes more efficient and drains the battery less. In case you're worried (and spoilers for the performance section), I found the sensor to perform very well. </p><h3 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hVcCySat5wHF4heM3wJwvP" name="IMG_0203" alt="The Razer Naga V3 Pro, its three faceplate, and the connector on a wooden table" src="https://cdn.mos.cms.futurecdn.net/hVcCySat5wHF4heM3wJwvP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Naga V3 Pro is a rather heavy beast (though lighter than its predecessor), being 112 g at its very lightest. It balances the weight well. With a very slight curve in the faceplate, it's easy to pick up with my thumb, and a groove for the ring finger on the right-hand side makes it a very accommodating shape for my rather large hands. The faceplates are well designed too, with the 12-button one curving inwards around the middle of the numberpad to give a natural groove to place the thumb. This groove also allows me to find my place without having to look at the mouse.</p><p>Importantly, that weight actually gives the Naga V3 Pro a great sense of comfort. Given you will be spending a lot of time hitting the left-hand side with your thumb, it has to be steady to avoid misclicks and poor aim in the middle of a game, and it does it well. The mouse feet are plenty smooth, and all buttons are easy to hit. </p><p>Thanks likely in part to its weight, the V3 Pro is a very sturdy mouse too, and one I wasn't afraid of breaking if it dropped off my desk. In fact, with a small compartment under the faceplate for the 2.4 GHz receiver, it's a decent mouse to throw in a backpack and use on the go too. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="N2jN5GDWbwqAafb9wd6rqP" name="IMG_0205" alt="The Razer Naga V3 Pro without its faceplate, with the connector inside" src="https://cdn.mos.cms.futurecdn.net/N2jN5GDWbwqAafb9wd6rqP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Though it takes a little time to get used to, the 12-button plate is far easier to use than you might otherwise think. With it counting up in threes, it's pretty easy to remember which number is which if you know your times tables, and muscle memory started to form for me very quickly. </p><p>The six-button and two-button faceplates are a little high for my liking, being near the top of the faceplate, but both have clearly defined buttons. The six-button layout also has a curve into the middle, which is great for finding a position for your thumb. </p><p>Given the button for the ring finger on the right-hand side, there's a specific way that you should hold the Naga V3 Pro to take advantage of its shape. The claw grip and fingertip grip both feel a tad awkward, but the palm grip feels perfect to me. The mouse holds the fingers well, and is well balanced to allow me to easily hit all of its buttons. </p><h3 class="article-body__section" id="section-performance"><span>Performance</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/n5AjozZwseHpFP4Fx8552Q-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the bottom, next to its faceplates" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3GmGvPS8MbEEGqFdL67KxP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the back left" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/F3uEAdBkLPSLENpuEpcdvP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the side, with the mouse upside down" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One of the biggest differences between the Naga V2 Pro and V3 Pro is in the 50,000 DPI optical sensor, and it performs really well. It's snappy, smooth, accurate, and is the same sensor used in the incredible <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/">Viper V4 Pro</a>. Naturally, the added weight means you aren't getting competitive-level speed from physically moving the mouse, but its sensor is top-notch. </p><p>One place it does fall significantly under the Viper V4 Pro is in its polling rate, with the Naga V3 Pro reaching a max 1,000 Hz polling out of the box. You can pay extra to get 8,000 Hz via the Mouse Dock Pro or HyperPolling dongle, but I'd argue it's not worth the extra price and hit to battery life for that polling rate, especially when the Naga V3 Pro is already plenty expensive. </p><p>In Final Fantasy 14, I found the Naga V3 Pro to be a genuine boon to gameplay, allowing me to hit almost every key I want without having to stretch, and without even customising the mouse. With some smart custom controls, I managed to make the mouse even more useful in-game, with the ring finger button opening the map, and the click under the scroll wheel opening inventory. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zJsH6RW63CVBGLCQQCcEzP" name="IMG_0213" alt="The Razer Naga V3 Pro on a wooden table" src="https://cdn.mos.cms.futurecdn.net/zJsH6RW63CVBGLCQQCcEzP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div><blockquote><p>Given its weight, I was concerned it would feel a tad sluggish in Counter-Strike 2, but I was happily proven wrong</p></blockquote></div><p>Given its weight, I was concerned it would feel a tad sluggish in Counter-Strike 2, but I was happily proven wrong. It certainly requires a bit more effort than a super light mouse, but I found myself more accurate holding down lines of sight.</p><p>The optical switches in the Naga V3 Pro are immense, being both accurate and feeling great under the finger. In fact, all of the buttons on the mouse perform really well, and it's clear how much thought has been put into feel and function. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/R4jXnNhcekAXsfn8dyLnzC-1920-80.png" alt="Razer Naga V3 Pro MouseTester result: " /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tjw5BFZFtS9sdyoqjdGbyC-1920-80.png" alt="Razer Naga V3 Pro MouseTester result: " /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JLfYyXaVFff72n7iiyj9zC-1920-80.png" alt="Razer Naga V3 Pro MouseTester result: " /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure></figure><p>But my biggest gripe with the Gen 4 optical switches under the left and right click is that I really dislike their sound. Both of them have a high-pitched, plastic-sounding ping that is near shrill to my ears. At a distance, it's fine, though a little loud, but clicking away at them all day for both games and work has driven home how much I dislike the sound of Razer's latest switch tech. </p><p>In fact, I had the chance to mess around with the <a href="https://www.razer.com/hk-en/gaming-mice/razer-basilisk-v3-pro?srsltid=AfmBOorjwFTDOy9vvq12jGRQZ1mDj7it4NlbtDFNCskHmaWP31joUscG" target="_blank">Basilisk V3 Pro</a> and its older Gen 3 switches, and I think the sound is so annoying that I'd almost pick those switches instead. </p><h3 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xnqip6yWUMJocx5tRWHheP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fQP8caEzApctMkKshLsQuP-1920-80.jpg" alt="The Razer Naga V3 Pro on a wooden table from the front" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It might seem like a tough challenge to make a 23-button mouse look good, but actually I think Razer has nailed it with the Naga V3 Pro, much like it nailed it with the Naga V2 Pro. There are better-looking, sleeker mice out there, but none that hold so many buttons, and visually, I think it's leagues ahead of Corsair's blocky <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review/" target="_blank">Scimitar Elite Wireless SE</a> (which is also an MMO mouse). </p><p>The side buttons, plus scroll wheel and base, have RGB lighting in them, which is customisable in Razer's software. They do a good job complementing the black of the rest of the mouse, and even look decent when turned off. </p><h3 class="article-body__section" id="section-software"><span>Software</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HpYUC8ZpnPzJDVJiuK9YD7-1920-80.jpg" alt="Razer Synapse software, showing off the Naga V3 Pro and its custom buttons" /><figcaption><small role="credit">Razer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fwArFE6DfR4MNqKevx8jZD-1920-80.jpg" alt="Razer Synapse software, showing off the Naga V3 Pro and its performance tab" /><figcaption><small role="credit">Razer</small></figcaption></figure></figure><div><blockquote><p>In the first hour or so, the profile system did fail, but after a reset, it has not had any problems since. </p></blockquote></div><p>Razer's software, like software from most major hardware brands, has always been inconsistent for me, but Synapse has worked almost perfectly in my time with the mouse. In the first hour or so, the profile system did fail (with it taking forever to save a profile), but after a reset, it has not had any problems since. </p><p>You can use it to customise RGB, swap between polling rates and DPI, and most importantly, you can swap what all of those buttons do. It's all rather intuitive and easy-to-use, and my only other complaint is that the web software doesn't yet support the Naga V3 Pro (or most of Razer's mice, for what it's worth).</p><p>Thanks to the breadth of buttons, I finally found a use for profiles. Though I'm happy to have them, I rarely use multiple profiles on my gaming mouse, but one profile is my everyday profile, another is for MMOs, and the last is for shooters. For the most part, swapping profiles mostly just changes what the 12 buttons on the faceplate do, but they also change the sensitivity of the scroll wheel's free scroll function. </p><h3 class="article-body__section" id="section-value"><span>Value </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zJsH6RW63CVBGLCQQCcEzP" name="IMG_0213" alt="The Razer Naga V3 Pro on a wooden table" src="https://cdn.mos.cms.futurecdn.net/zJsH6RW63CVBGLCQQCcEzP-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The first time I heard the Naga V3 Pro's price point, I heard myself exhale a little too loudly. $180 is so much money, and though it is using the latest Razer sensor, it is at just a standard polling rate. And the Viper V4 Pro has the latest sensor and switches, plus it's a lot lighter, offers 8,000 Hz polling out of the box.  And is still $20 cheaper. </p><p>Then, if you're looking for an MMO mouse, Corsair's Scimitar Elite Wireless SE is $40 less at MSRP, but is regularly less than half the price of the Naga V3 Pro. Giving it 89% in our review, it is currently our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-mmo-gaming-mouse" target="_blank">best MMO gaming mouse</a>. It doesn't have a swappable faceplate, but it has chunkier side buttons that are designed to work as a mini Stream Deck. </p><p>And if you're willing to go more budget, the likes of the Naga V2 Hyperspeed is often under half the price of the Naga V3 Pro, and comes with the same scroll wheel technology (though last gen), Razer's 30K optical sensor, and 250 hours of battery life (though it uses swappable batteries). You aren't getting the swappable faceplates and the latest sensor, but for all intents and purposes, it's still a very solid MMO mouse. </p><p>So, for the same price, you could pick up a Naga V3 Pro alongside <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair's uber lightweight Sabre V2 Pro</a>, four and a half <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2 Pros</a>, or just under 14 months of Final Fantasy 14. And that is a heavy price to stomach for any gaming mouse, even though the Naga V3 Pro is genuinely great. </p><p>If you are someone who occasionally plays MMOs, I don't think the Naga V3 Pro is necessarily for you, but if you want the best and play Final Fantasy 14 like it's your second job, I don't think I'd be recommending anything else. Though I would probably recommend cranking the speakers loud enough to drown out the clicks. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus ROG Harpe II Extreme Edition 20 review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Asus ROG Harpe II Extreme Edition 20" data-widget-title=""></div><p>Asus's ROG 20th anniversary edition gear is pretty much all about extravagance. Just look at the $600 <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-edition-20-review/" target="_blank">Azoth Extreme Edition 20</a>. The Harpe II Extreme Edition 20 is much the same, with gold plating and a whopping 65,000 DPI. It is bougie in feel, look, and price. </p><p>I couldn't possibly call it a bad gaming mouse, because taste aside, it's a bit of a beast. It's just not a feasible buy for someone <em>only </em>looking for a competitive-level gaming mouse, and that's before mentioning the weight increase that comes with shoving gold inside it. </p><p>Feeling like it's ripped straight out of <a href="https://www.pcgamer.com/deus-ex-human-revolution-review/" target="_blank">Deus Ex: Human Revolution</a>, I think its smattering of blacks and golds looks super clean. I'm normally pretty cynical about gold, aesthetically speaking, but in this mouse, it feels like the appearance is really considered among the black and transparent sides. The 24K gold detailing is part of the ensemble, and not the centrepiece itself. </p><div ><table><caption>Asus ROG Harpe II Extreme Edition 20 Specs</caption><tbody><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>ROG AimPoint Pro 65K </p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired (USB Type-C), wireless (2.4 GHz and Bluetooth)</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>ROG 100M Optical Micro Switch </p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>8,000 Hz </p></td></tr><tr><td class="firstcol " ><p><strong>DPI</strong></p></td><td  ><p>65,000</p></td></tr><tr><td class="firstcol " ><p><strong>Acceleration</strong></p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>800 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>RGB</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>82g</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>Up to 98.5 hours in Bluetooth mode with lighting off, up to 70 hours in 2.4 GHz with lighting on</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://rog.asus.com/mice-mouse-pads/mice/wireless/rog-harpe-ii-extreme-edition-20/" target="_blank">$260</a> | <a href="https://rog.asus.com/mice-mouse-pads/mice/wireless/rog-harpe-ii-extreme-edition-20/" target="_blank">£250</a> </p></td></tr></tbody></table></div><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 showpiece mouse: </strong>With 24K gold detailing and an included display box, Asus has gone all in with this mouse. <br><br>✅ <strong> You want top-of-the-line specs: </strong>65,000 DPI and 8,000 Hz polling are the headline specs for this mouse, but it's crammed with good tech</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 want an ultra-light mouse: </strong>Though not super heavy, the 82 g weight is noticeable. And it's almost double the ROG Harpe II it's based on.<br><br><strong>❌  You simply want a competitive mouse:</strong> Razer offers arguably better competitive offerings for 60% of the price. </p></div></div></div></div><p>The scroll wheel and side buttons aren't actual gold (though they look it), but the internals are. That's why it has a transparent shell. The body of the mouse also hides an ROG 20th anniversary logo, which the RGB shines through when turned on. The whole thing looks great, be it turned on or not. </p><p>You can even argue the mouse's flair has utility too. The glass skates are super smooth, and the metal scroll wheel and side buttons are both satisfying to hit. In fact, I'd say the scroll wheel and side buttons are among the nicest I've used. </p><p>The mouse is sleek to the touch too, with a super smooth shell, and it feels great in the palm. Unfortunately though, that does make it a fingerprint magnet. The idea of getting a $250 gold-plated gaming mouse grubby makes me feel a bit nauseous, so it needs a quick wipe-down every few days. </p><p>It might get grubby, but strong materials make me feel confident that throwing it in a backpack won't do damage to it. The side walls don't bend under pressure, and as a result, it feels very sturdy. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TadWYcK3fpycz5KuFAss39-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 on a table, next to its box and display case" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HZ8nmzZjZnuAjeCqsNB6x8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20, outside, from the bottom" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YiSwgtbztoHqtxwNG6Ys39-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 on top of rock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HJ2jx9RRgn4hAtVDq23m59-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20, on top of wood, from the back left" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Qbxryzg2GeVHWiavciYi49-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 in a hand outside, from the back left" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Like the Azoth Extreme, it comes in packaging that is itself a statement. The box is a puzzle box-like triangle, with a smaller transparent display case in it, and that makes it easy to show off on a desk or shelf. The box comes with the wireless receiver, a USB extender, glass mouse feet, the cord, a thank you card, and a cleaning kit.</p><p>The Harpe II Extreme Edition 20 is pretty killer in the specs department and feels great in game. The AimPoint Pro sensor is snappy and fast, and though I'd never need a 65,000 DPI, and likely won't get much benefit from the 8,000 Hz polling, it's nice to have it in such an expensive mouse. </p><p>In fairness, I'd advise turning the mouse down to 1,000 Hz for anyone but the most competitive gamer, as the 70 or so hours of battery life take a hit as a result. And 70 hours is right around the middle of the pack, as it stands. </p><p>Though its specs make it a competitive-level mouse, the weight doesn't. 82 g is nearly double the 49 g in the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, which is our current pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a>, and Asus' offering is $90 more. Even the standard Harpe II Ace, which is a pretty similar mouse in looks and feel, weighs in at 48 g and is currently <a href="https://uk.store.asus.com/rog-harpe-ii-ace-gaming-mouse6663-32312.html" target="_blank">half the price</a> of the Extreme Edition.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/82ED2HWi5o53hX4DHHUoBE-1920-80.png" alt="Asus ROG Harpe II Extreme Edition 20 mouse tester result: xCount vs time" /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/K6USGMvJk62frJanuekJAE-1920-80.png" alt="Asus ROG Harpe II Extreme Edition 20 mouse tester result: Interval vs time" /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XGYM8oDUYiWhgp2r3GBh9E-1920-80.png" alt="Asus ROG Harpe II Extreme Edition 20 mouse tester result: xVelocity vs time" /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">Mouse Tester</small></figcaption></figure></figure><p>In-game, the Harpe II Extreme Edition 20 performs very well in my hands. The fast-paced, precise shooting of Counter-Strike 2 is a breeze, and the mouse clicks are not only well defined but very responsive too. I could see some not liking just how much the glass feet and smooth top slide, but for me, I find it to be just what I need to spring around quickly or snap onto heads. </p><p>That does mean it feels a tad overengineered for the likes of <a href="https://www.pcgamer.com/games/roguelike/after-close-to-140-hours-with-it-i-think-slay-the-spire-2-feels-more-like-a-sequel-than-a-dlc-even-if-megacrit-was-forced-to-make-it/" target="_blank">Slay the Spire 2</a>, or other similarly slow games, but I wouldn't call that experience bad either. It feels like shooting a bullet at an ant. It will get the job done, but it's a bit flashy, isn't it?</p><p>Painting simulator <a href="https://www.pcgamer.com/i-tried-following-a-bob-ross-tutorial-while-playing-an-artist-sim-and-the-struggle-was-real/" target="_blank">Such Art</a> is a classic mouse testing game for me, as it requires fine movement and has a slower pace. The mouse needs to feel comfortable; it needs to slide smoothly, and the sensor needs to send data to the computer at a consistent rate to perfectly draw, well, whatever my meagre art skills are capable of. I'm happy to report the Asus passed with flying colours here, proving the only obstacle to me making good art is myself.</p><p>The actual design of the mouse feels a bit more plain than I would expect for such a flashy mouse. You aren't getting extra functions here, or even anything like the Hyperscroll wheel Razer shoves into the <a href="https://www.pcgamer.com/hardware/gaming-mice/mmo-heads-rejoice-razer-is-bringing-out-the-naga-v3-pro-with-upgraded-switches-loads-of-customizability-and-a-ridiculous-dpi/" target="_blank">Razer Naga V3 Pro</a>. It has a DPI and pair button on the bottom, plus the option to swap from wired to wireless, and that's it. But as such, other than the smooth feel, there's not much to get used to. It's a typical gaming mouse, just one that's luxuriously built and luxuriously priced. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FumWT6C2pQ9Z2QPYiWc339-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 box contents" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GkiuGAEJZoJA6k4AaZQm29-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 on a black table, next to its box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7RN8kAeUZWPzvecBPuZMt8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20, outside in a hand, from the top" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CGKxiNvygEKWhNsm4smac8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 outside, in a hand, from the right" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9Muq8pRWBrFgqtpqP98tf8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 outside, in a hand, from the left" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div><blockquote><p>If you have the cash to spare and want something to celebrate Asus ROG's 20th anniversary, the Harpe II Extreme Edition 20 does not rest on the laurels that are its gold trimmings</p></blockquote></div><p>But let's be honest, the Harpe II Extreme Edition 20 is not a gaming mouse you buy simply because you wanted something with competitive specs. You can get equally competitive or even better choices for cheaper. For the same price, you can get one and a half Razer Viper V4 Pros or just under eight <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2s</a>. In fact, as we noted recently, you can pick up an <a href="https://www.pcgamer.com/hardware/upgrade-your-entire-desk-setup-for-under-usd200-with-this-fabulous-selection-of-budget-gaming-gear-including-a-wireless-mouse-headset-controller-and-keeb/" target="_blank">entire desk setup for less money than this mouse alone</a>. </p><p>But if you have the cash to spare and want something to celebrate Asus ROG's 20th anniversary, the Harpe II Extreme Edition 20 does not rest on the laurels that are its gold trimmings. It's a very solidly made gaming mouse, and viable in both competitive and non-competitive games. It looks great, feels great in the hand, and comes with tons of little extras in the box. And should you want to put it away, the display case looks great too. </p><p>Perhaps the biggest compliment I can give Asus on its Harpe II Extreme Edition 20 is that I don't dislike the mouse nearly as much as I thought I might, based on the price and look. The notion of paying over $200 for something that has gold in it certainly makes my wallet retch, but boy does Asus do a lot to justify that price tag. </p><p>It's simply infeasible for the average gamer, but that's not who this is for. Like the Azoth Extreme Edition 20, <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-centauri-80-review/" target="_blank">Melgeek's Centauri 80</a>, or <a href="https://www.pcgamer.com/hardware/motherboards/msi-meg-x870e-godlike-x-edition-review/" target="_blank">MSI's Godlike X motherboard</a>, it being over the top is the point here. But if your blood is a bit richer than mine, I don't think you'll be disappointed. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/asus-rog-harpe-ii-extreme-edition-20-review/</link>
                                                                            <description>
                            <![CDATA[ The most luxurious gaming mouse I've managed to get grubby. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9rH2aY9tFgUwQt6sayPTuA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5Z5HG6hDyVtLXotzVznxzd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 14 Aug 2026 12:04:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5Z5HG6hDyVtLXotzVznxzd-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Harpe II Extreme Edition 20 in a hand, from the back]]></media:description>                                                            <media:text><![CDATA[Asus ROG Harpe II Extreme Edition 20 in a hand, from the back]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Harpe II Extreme Edition 20 in a hand, from the back]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5Z5HG6hDyVtLXotzVznxzd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Asus ROG Harpe II Extreme Edition 20" data-widget-title=""></div><p>Asus's ROG 20th anniversary edition gear is pretty much all about extravagance. Just look at the $600 <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-edition-20-review/" target="_blank">Azoth Extreme Edition 20</a>. The Harpe II Extreme Edition 20 is much the same, with gold plating and a whopping 65,000 DPI. It is bougie in feel, look, and price. </p><p>I couldn't possibly call it a bad gaming mouse, because taste aside, it's a bit of a beast. It's just not a feasible buy for someone <em>only </em>looking for a competitive-level gaming mouse, and that's before mentioning the weight increase that comes with shoving gold inside it. </p><p>Feeling like it's ripped straight out of <a href="https://www.pcgamer.com/deus-ex-human-revolution-review/" target="_blank">Deus Ex: Human Revolution</a>, I think its smattering of blacks and golds looks super clean. I'm normally pretty cynical about gold, aesthetically speaking, but in this mouse, it feels like the appearance is really considered among the black and transparent sides. The 24K gold detailing is part of the ensemble, and not the centrepiece itself. </p><div ><table><caption>Asus ROG Harpe II Extreme Edition 20 Specs</caption><tbody><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>ROG AimPoint Pro 65K </p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired (USB Type-C), wireless (2.4 GHz and Bluetooth)</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>ROG 100M Optical Micro Switch </p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>8,000 Hz </p></td></tr><tr><td class="firstcol " ><p><strong>DPI</strong></p></td><td  ><p>65,000</p></td></tr><tr><td class="firstcol " ><p><strong>Acceleration</strong></p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>800 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>RGB</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>82g</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>Up to 98.5 hours in Bluetooth mode with lighting off, up to 70 hours in 2.4 GHz with lighting on</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://rog.asus.com/mice-mouse-pads/mice/wireless/rog-harpe-ii-extreme-edition-20/" target="_blank">$260</a> | <a href="https://rog.asus.com/mice-mouse-pads/mice/wireless/rog-harpe-ii-extreme-edition-20/" target="_blank">£250</a> </p></td></tr></tbody></table></div><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 showpiece mouse: </strong>With 24K gold detailing and an included display box, Asus has gone all in with this mouse. <br><br>✅ <strong> You want top-of-the-line specs: </strong>65,000 DPI and 8,000 Hz polling are the headline specs for this mouse, but it's crammed with good tech</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 want an ultra-light mouse: </strong>Though not super heavy, the 82 g weight is noticeable. And it's almost double the ROG Harpe II it's based on.<br><br><strong>❌  You simply want a competitive mouse:</strong> Razer offers arguably better competitive offerings for 60% of the price. </p></div></div></div></div><p>The scroll wheel and side buttons aren't actual gold (though they look it), but the internals are. That's why it has a transparent shell. The body of the mouse also hides an ROG 20th anniversary logo, which the RGB shines through when turned on. The whole thing looks great, be it turned on or not. </p><p>You can even argue the mouse's flair has utility too. The glass skates are super smooth, and the metal scroll wheel and side buttons are both satisfying to hit. In fact, I'd say the scroll wheel and side buttons are among the nicest I've used. </p><p>The mouse is sleek to the touch too, with a super smooth shell, and it feels great in the palm. Unfortunately though, that does make it a fingerprint magnet. The idea of getting a $250 gold-plated gaming mouse grubby makes me feel a bit nauseous, so it needs a quick wipe-down every few days. </p><p>It might get grubby, but strong materials make me feel confident that throwing it in a backpack won't do damage to it. The side walls don't bend under pressure, and as a result, it feels very sturdy. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TadWYcK3fpycz5KuFAss39-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 on a table, next to its box and display case" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HZ8nmzZjZnuAjeCqsNB6x8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20, outside, from the bottom" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YiSwgtbztoHqtxwNG6Ys39-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 on top of rock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HJ2jx9RRgn4hAtVDq23m59-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20, on top of wood, from the back left" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Qbxryzg2GeVHWiavciYi49-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 in a hand outside, from the back left" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Like the Azoth Extreme, it comes in packaging that is itself a statement. The box is a puzzle box-like triangle, with a smaller transparent display case in it, and that makes it easy to show off on a desk or shelf. The box comes with the wireless receiver, a USB extender, glass mouse feet, the cord, a thank you card, and a cleaning kit.</p><p>The Harpe II Extreme Edition 20 is pretty killer in the specs department and feels great in game. The AimPoint Pro sensor is snappy and fast, and though I'd never need a 65,000 DPI, and likely won't get much benefit from the 8,000 Hz polling, it's nice to have it in such an expensive mouse. </p><p>In fairness, I'd advise turning the mouse down to 1,000 Hz for anyone but the most competitive gamer, as the 70 or so hours of battery life take a hit as a result. And 70 hours is right around the middle of the pack, as it stands. </p><p>Though its specs make it a competitive-level mouse, the weight doesn't. 82 g is nearly double the 49 g in the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, which is our current pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a>, and Asus' offering is $90 more. Even the standard Harpe II Ace, which is a pretty similar mouse in looks and feel, weighs in at 48 g and is currently <a href="https://uk.store.asus.com/rog-harpe-ii-ace-gaming-mouse6663-32312.html" target="_blank">half the price</a> of the Extreme Edition.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/82ED2HWi5o53hX4DHHUoBE-1920-80.png" alt="Asus ROG Harpe II Extreme Edition 20 mouse tester result: xCount vs time" /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/K6USGMvJk62frJanuekJAE-1920-80.png" alt="Asus ROG Harpe II Extreme Edition 20 mouse tester result: Interval vs time" /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XGYM8oDUYiWhgp2r3GBh9E-1920-80.png" alt="Asus ROG Harpe II Extreme Edition 20 mouse tester result: xVelocity vs time" /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">Mouse Tester</small></figcaption></figure></figure><p>In-game, the Harpe II Extreme Edition 20 performs very well in my hands. The fast-paced, precise shooting of Counter-Strike 2 is a breeze, and the mouse clicks are not only well defined but very responsive too. I could see some not liking just how much the glass feet and smooth top slide, but for me, I find it to be just what I need to spring around quickly or snap onto heads. </p><p>That does mean it feels a tad overengineered for the likes of <a href="https://www.pcgamer.com/games/roguelike/after-close-to-140-hours-with-it-i-think-slay-the-spire-2-feels-more-like-a-sequel-than-a-dlc-even-if-megacrit-was-forced-to-make-it/" target="_blank">Slay the Spire 2</a>, or other similarly slow games, but I wouldn't call that experience bad either. It feels like shooting a bullet at an ant. It will get the job done, but it's a bit flashy, isn't it?</p><p>Painting simulator <a href="https://www.pcgamer.com/i-tried-following-a-bob-ross-tutorial-while-playing-an-artist-sim-and-the-struggle-was-real/" target="_blank">Such Art</a> is a classic mouse testing game for me, as it requires fine movement and has a slower pace. The mouse needs to feel comfortable; it needs to slide smoothly, and the sensor needs to send data to the computer at a consistent rate to perfectly draw, well, whatever my meagre art skills are capable of. I'm happy to report the Asus passed with flying colours here, proving the only obstacle to me making good art is myself.</p><p>The actual design of the mouse feels a bit more plain than I would expect for such a flashy mouse. You aren't getting extra functions here, or even anything like the Hyperscroll wheel Razer shoves into the <a href="https://www.pcgamer.com/hardware/gaming-mice/mmo-heads-rejoice-razer-is-bringing-out-the-naga-v3-pro-with-upgraded-switches-loads-of-customizability-and-a-ridiculous-dpi/" target="_blank">Razer Naga V3 Pro</a>. It has a DPI and pair button on the bottom, plus the option to swap from wired to wireless, and that's it. But as such, other than the smooth feel, there's not much to get used to. It's a typical gaming mouse, just one that's luxuriously built and luxuriously priced. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FumWT6C2pQ9Z2QPYiWc339-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 box contents" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GkiuGAEJZoJA6k4AaZQm29-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 on a black table, next to its box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7RN8kAeUZWPzvecBPuZMt8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20, outside in a hand, from the top" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CGKxiNvygEKWhNsm4smac8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 outside, in a hand, from the right" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9Muq8pRWBrFgqtpqP98tf8-1920-80.jpg" alt="Asus ROG Harpe II Extreme Edition 20 outside, in a hand, from the left" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div><blockquote><p>If you have the cash to spare and want something to celebrate Asus ROG's 20th anniversary, the Harpe II Extreme Edition 20 does not rest on the laurels that are its gold trimmings</p></blockquote></div><p>But let's be honest, the Harpe II Extreme Edition 20 is not a gaming mouse you buy simply because you wanted something with competitive specs. You can get equally competitive or even better choices for cheaper. For the same price, you can get one and a half Razer Viper V4 Pros or just under eight <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2s</a>. In fact, as we noted recently, you can pick up an <a href="https://www.pcgamer.com/hardware/upgrade-your-entire-desk-setup-for-under-usd200-with-this-fabulous-selection-of-budget-gaming-gear-including-a-wireless-mouse-headset-controller-and-keeb/" target="_blank">entire desk setup for less money than this mouse alone</a>. </p><p>But if you have the cash to spare and want something to celebrate Asus ROG's 20th anniversary, the Harpe II Extreme Edition 20 does not rest on the laurels that are its gold trimmings. It's a very solidly made gaming mouse, and viable in both competitive and non-competitive games. It looks great, feels great in the hand, and comes with tons of little extras in the box. And should you want to put it away, the display case looks great too. </p><p>Perhaps the biggest compliment I can give Asus on its Harpe II Extreme Edition 20 is that I don't dislike the mouse nearly as much as I thought I might, based on the price and look. The notion of paying over $200 for something that has gold in it certainly makes my wallet retch, but boy does Asus do a lot to justify that price tag. </p><p>It's simply infeasible for the average gamer, but that's not who this is for. Like the Azoth Extreme Edition 20, <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-centauri-80-review/" target="_blank">Melgeek's Centauri 80</a>, or <a href="https://www.pcgamer.com/hardware/motherboards/msi-meg-x870e-godlike-x-edition-review/" target="_blank">MSI's Godlike X motherboard</a>, it being over the top is the point here. But if your blood is a bit richer than mine, I don't think you'll be disappointed. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ These could be the first leaked images of the new Logitech Superstrike, which looks rather dashing in all-black ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2086871948663886063"><p lang="en" dir="ltr">Full pictures of the Logitech G Pro X3 Superstrike have leaked pic.twitter.com/XHss2IH7Kv<a href="https://twitter.com/cantworkitout/status/2086871948663886063">August 10, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Last month, I reported that a leaker suggested we'll see another iteration of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> announced during the <a href="https://www.logitechg.com/en-gb/campaigns/logitechg-play" target="_blank">Logitech G Play event in September</a>. Now, peripheral reviewer Jakeu has apparently got their hands on <a href="https://x.com/jakeufps/status/2086871948663886063?s=20" target="_blank">actual photos of the new mouse</a>: the Logitech X3 Superstrike, in all-black apart from some smaller white stylings.</p><p>I should say the phrase "actual photos" is quite loose, though, because even if these are legit, they are product photos on a white background rather than something a little more 'in the flesh.' Saying that, Jakeu also links to a <a href="https://www.reddit.com/r/MouseReview/comments/1vala9b/superstrike_2_leaks/" target="_blank">picture of a supposed pink 'in the flesh' version</a> posted on Reddit.</p><p>The original leak said the new mouse will have no new Hero 3 sensor, but will have an upgraded controller and tweaks to the HITS system. That's Logitech's 'haptic-inductive trigger system' which gives the Superstrike analogue clicks that no other mouse has replicated.</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>We can't say anything for certain, of course—far from it—so the following is speculation, but based on the claimed images, it <em>looks </em>like the same design, shape, side buttons, and even skates as the first Superstrike, the X2. Except all-black. The main hope on my end is that the weight distribution is improved to be more central and the overall weight is lowered, preferably closer to 50 g than 60 g.</p><p>At any rate, if this is indeed what is announced at G Play in September then we should know before long, and I'll hopefully be able to get hands-on with it as I'll be attending (I've not been told what Logi will be showing off, so I'm just as in the dark as you).</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/MouseReview/comments/1vala9b/superstrike_2_leaks">SUPERSTRIKE 2 Leaks</a><figcaption><cite> from <a href="https://www.reddit.com/r/MouseReview">r/MouseReview</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>I do hope there are more significant changes than a re-skin, though, because as nice as the all-black version looks—with what looks like a more textured coating, too—I'm not sure that will be much for anyone to get excited over. New side buttons, an improved scroll wheel, and a lighter or more centrally balanced mouse, on the other hand, would do wonders.</p><p>Even some of these changes might justify the <a href="https://x.com/jakeufps/status/2086903393658769829" target="_blank">supposedly leaked price tag</a> of, err, €190. That's €10 more than the X2. It would eliminate the main downsides of the mouse while maintaining the genuinely revolutionary and performance-enhancing HITS system. Fingers crossed.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/these-could-be-the-first-leaked-images-of-the-new-logitech-superstrike-which-looks-rather-dashing-in-all-black/</link>
                                                                            <description>
                            <![CDATA[ Much better than my attempt at a rendition, that's for sure. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">n27KvVro29kAmCYMpfxYx</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dPBKPaL6EHQX54hJ6RyQQa-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 11 Aug 2026 16:03:59 +0000</pubDate>                                                                                                                                <updated>Tue, 11 Aug 2026 16:05:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dPBKPaL6EHQX54hJ6RyQQa-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech G Pro X2 Superstrike with the &#039;2&#039; numbers crossed out and replaced with a &#039;3&#039;.]]></media:description>                                                            <media:text><![CDATA[A Logitech G Pro X2 Superstrike with the &#039;2&#039; numbers crossed out and replaced with a &#039;3&#039;.]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech G Pro X2 Superstrike with the &#039;2&#039; numbers crossed out and replaced with a &#039;3&#039;.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dPBKPaL6EHQX54hJ6RyQQa-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2086871948663886063"><p lang="en" dir="ltr">Full pictures of the Logitech G Pro X3 Superstrike have leaked pic.twitter.com/XHss2IH7Kv<a href="https://twitter.com/cantworkitout/status/2086871948663886063">August 10, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Last month, I reported that a leaker suggested we'll see another iteration of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> announced during the <a href="https://www.logitechg.com/en-gb/campaigns/logitechg-play" target="_blank">Logitech G Play event in September</a>. Now, peripheral reviewer Jakeu has apparently got their hands on <a href="https://x.com/jakeufps/status/2086871948663886063?s=20" target="_blank">actual photos of the new mouse</a>: the Logitech X3 Superstrike, in all-black apart from some smaller white stylings.</p><p>I should say the phrase "actual photos" is quite loose, though, because even if these are legit, they are product photos on a white background rather than something a little more 'in the flesh.' Saying that, Jakeu also links to a <a href="https://www.reddit.com/r/MouseReview/comments/1vala9b/superstrike_2_leaks/" target="_blank">picture of a supposed pink 'in the flesh' version</a> posted on Reddit.</p><p>The original leak said the new mouse will have no new Hero 3 sensor, but will have an upgraded controller and tweaks to the HITS system. That's Logitech's 'haptic-inductive trigger system' which gives the Superstrike analogue clicks that no other mouse has replicated.</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>We can't say anything for certain, of course—far from it—so the following is speculation, but based on the claimed images, it <em>looks </em>like the same design, shape, side buttons, and even skates as the first Superstrike, the X2. Except all-black. The main hope on my end is that the weight distribution is improved to be more central and the overall weight is lowered, preferably closer to 50 g than 60 g.</p><p>At any rate, if this is indeed what is announced at G Play in September then we should know before long, and I'll hopefully be able to get hands-on with it as I'll be attending (I've not been told what Logi will be showing off, so I'm just as in the dark as you).</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/MouseReview/comments/1vala9b/superstrike_2_leaks">SUPERSTRIKE 2 Leaks</a><figcaption><cite> from <a href="https://www.reddit.com/r/MouseReview">r/MouseReview</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>I do hope there are more significant changes than a re-skin, though, because as nice as the all-black version looks—with what looks like a more textured coating, too—I'm not sure that will be much for anyone to get excited over. New side buttons, an improved scroll wheel, and a lighter or more centrally balanced mouse, on the other hand, would do wonders.</p><p>Even some of these changes might justify the <a href="https://x.com/jakeufps/status/2086903393658769829" target="_blank">supposedly leaked price tag</a> of, err, €190. That's €10 more than the X2. It would eliminate the main downsides of the mouse while maintaining the genuinely revolutionary and performance-enhancing HITS system. Fingers crossed.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ MMO heads rejoice, Razer is bringing out the Naga V3 Pro with upgraded switches, loads of customizability and a ridiculous DPI ]]></title>
                                                                                                <dc:content><![CDATA[ <p>MMO gaming mice look a bit funky. You probably knew that already.  With sometimes dozens of buttons for all the different controls, they're niche by nature. Yet the newly unveiled Razer Naga V3 Pro looks to get around that, claiming to be both easy to use and button-heavy at the same time. </p><p>In a sense, it seems like a pretty safe upgrade from the <a href="https://www.pcgamer.com/our-favourite-mmo-mouse-just-got-better/" target="_blank">Naga V2 Pro</a> from back in 2022. Like that model, it ships with three swappable plates by your thumb. The standard layout has a dozen buttons, but you can replace them with a mere six (or just two) for ease of use. With two further buttons besides the left click, and two more under the scroll wheel, the Naga V3 Pro can have 23, 17 or 13 buttons total. </p><p>Razer says these plates snap into place in seconds without any tools. The idea being you can flip between them when you load up different games. It envisions players using the dozen buttons for MMOs, six buttons for MOBA and battle royales, then the two buttons for FPS games or everyday use. </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>Head of PC gaming at Razer, Barrie Ooi, says, “The Naga has led multi-button gaming for 17 years, and the V3 Pro is our answer to a community that wanted one mouse to adapt to every genre they play.”</p><p>Where it does differ from the Naga V2 Pro is the inclusion of Razer's Focus Pro 3rd generation optical sensor with 50,000 DPI, plus fourth generation optical switches. It's also a bit lighter, at 97 g without a plate installed,  or around 112–117 grams with. At its lightest, the Naga V3 Pro is a whopping 112 g, which makes it a bit of a thicc boi. </p><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="6XWqYBkYYkS282u9mVGt2g" name="C (1)" alt="Razer Naga V3 Pro on a white, grey, and black background with its three sideplates next to it" src="https://cdn.mos.cms.futurecdn.net/6XWqYBkYYkS282u9mVGt2g-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Razer)</span></figcaption></figure><p>If you are interested in the upgrade, you can <a href="https://razer.com/naga-v3-pro" target="_blank">pick it up from Razer</a> right now for $180 / £180 / €200. That is a hefty 'ol fee that matches the MSRP of the Naga V2 Pro.</p><p>And if you're thinking of spending that amount of money on a gaming mouse, you should also consider the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, with its top-notch specs and low weight, or the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, with its incredible click technology. Both of these are among the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a> you can buy today. The Superstrike will fetch the same price as the Naga V3 Pro, but the Viper V4 Pro is cheaper. Either way, the competition is super fierce at this price point. </p><p>And that's before mentioning that the Naga V3 Pro only comes with a 1,000 Hz polling rate (though it can get up to 8,000 Hz with the Mouse Dock Pro or HyperPolling Wireless Dongle). Still, the Naga V3 Pro is unique with the sheer volume of buttons available, and it's a sweet upgrade on the Naga V2 Pro for the same base price. Whether or not it's actually worth all that cash will be largely dependent on how it feels in the hand or your actual need for all those buttons. </p><p>Luckily, one is on its way to the PC Gamer offices—so you can expect our full review soon. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/mmo-heads-rejoice-razer-is-bringing-out-the-naga-v3-pro-with-upgraded-switches-loads-of-customizability-and-a-ridiculous-dpi/</link>
                                                                            <description>
                            <![CDATA[ It's like the V2 Pro, but a little lighter and a bit better. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UoNSYSV7cpExxJi29wmbS4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pwHUEAoG8qFNfmUHw6h3Bb-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 11 Aug 2026 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/pwHUEAoG8qFNfmUHw6h3Bb-1920-80.png">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Naga V3 Pro on a black background]]></media:description>                                                            <media:text><![CDATA[Razer Naga V3 Pro on a black background]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Naga V3 Pro on a black background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pwHUEAoG8qFNfmUHw6h3Bb-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>MMO gaming mice look a bit funky. You probably knew that already.  With sometimes dozens of buttons for all the different controls, they're niche by nature. Yet the newly unveiled Razer Naga V3 Pro looks to get around that, claiming to be both easy to use and button-heavy at the same time. </p><p>In a sense, it seems like a pretty safe upgrade from the <a href="https://www.pcgamer.com/our-favourite-mmo-mouse-just-got-better/" target="_blank">Naga V2 Pro</a> from back in 2022. Like that model, it ships with three swappable plates by your thumb. The standard layout has a dozen buttons, but you can replace them with a mere six (or just two) for ease of use. With two further buttons besides the left click, and two more under the scroll wheel, the Naga V3 Pro can have 23, 17 or 13 buttons total. </p><p>Razer says these plates snap into place in seconds without any tools. The idea being you can flip between them when you load up different games. It envisions players using the dozen buttons for MMOs, six buttons for MOBA and battle royales, then the two buttons for FPS games or everyday use. </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>Head of PC gaming at Razer, Barrie Ooi, says, “The Naga has led multi-button gaming for 17 years, and the V3 Pro is our answer to a community that wanted one mouse to adapt to every genre they play.”</p><p>Where it does differ from the Naga V2 Pro is the inclusion of Razer's Focus Pro 3rd generation optical sensor with 50,000 DPI, plus fourth generation optical switches. It's also a bit lighter, at 97 g without a plate installed,  or around 112–117 grams with. At its lightest, the Naga V3 Pro is a whopping 112 g, which makes it a bit of a thicc boi. </p><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="6XWqYBkYYkS282u9mVGt2g" name="C (1)" alt="Razer Naga V3 Pro on a white, grey, and black background with its three sideplates next to it" src="https://cdn.mos.cms.futurecdn.net/6XWqYBkYYkS282u9mVGt2g-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Razer)</span></figcaption></figure><p>If you are interested in the upgrade, you can <a href="https://razer.com/naga-v3-pro" target="_blank">pick it up from Razer</a> right now for $180 / £180 / €200. That is a hefty 'ol fee that matches the MSRP of the Naga V2 Pro.</p><p>And if you're thinking of spending that amount of money on a gaming mouse, you should also consider the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, with its top-notch specs and low weight, or the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, with its incredible click technology. Both of these are among the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a> you can buy today. The Superstrike will fetch the same price as the Naga V3 Pro, but the Viper V4 Pro is cheaper. Either way, the competition is super fierce at this price point. </p><p>And that's before mentioning that the Naga V3 Pro only comes with a 1,000 Hz polling rate (though it can get up to 8,000 Hz with the Mouse Dock Pro or HyperPolling Wireless Dongle). Still, the Naga V3 Pro is unique with the sheer volume of buttons available, and it's a sweet upgrade on the Naga V2 Pro for the same base price. Whether or not it's actually worth all that cash will be largely dependent on how it feels in the hand or your actual need for all those buttons. </p><p>Luckily, one is on its way to the PC Gamer offices—so you can expect our full review soon. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Pulsar Feinmann F01 Noctua Edition review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Pulsar Feinmann F01 Noctua Edition" data-widget-title=""></div><p>Would you believe me if I told you the Pulsar Feinmann F01 Noctua Edition is actually the second gaming mouse with a fan I've tried? Back in 2021, I had the unique experience of getting my clammy mitts on the Marsback Zephyr Pro, and I was… a fan.</p><p>But I can comfortably say that Pulsar's Feinmann F01 Noctua Edition is the most luxurious gaming mouse with a fan I've tried—a prestigious award, I know. It's loaded with great specs, like a Pulsar XS-2 sensor with up to 42,000 DPI and up to an 8,000 Hz polling rate. As such, it's not <em>just </em>a gaming mouse with a fan; it's a full-on competitive device. </p><p>I suspect the most 'love it or hate it' aspect of Pulsar and Noctua's Frankenstein gaming mouse won't actually have anything to do with the aforementioned fan but will instead be its honeycomb shell. In order for the fan to actually blow cold air on your palm, it needs room to do so, and the spaces in the shell are plenty. They also come with the added benefit of taking some weight off, which is needed because the F01 Noctua Edition is pretty heavy at 73 g.</p><div ><table><caption>Pulsar Feinmann F01 Noctua Edition Specs</caption><tbody><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>Pulsar XS-2</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired and wireless (2.4 GHz)</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Optical switches</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to<strong> </strong>8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>DPI</strong></p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p><strong>Acceleration</strong></p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>800 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>RGB</strong></p></td><td  ><p>One RGB light</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>73 g</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>8-20 hours (depending on polling rate and fan speed)</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://us.pulsar.gg/products/noctua-feinmann-f01-gaming-mouse?variant=53226219372911" target="_blank">$180</a> | <a href="https://eu.pulsar.gg/products/noctua-feinmann-f01-gaming-mouse?variant=54883923362121" target="_blank">€199</a></p></td></tr></tbody></table></div><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> Your hands get sweaty while gaming: </strong>The fan is a joy to use, and fine-tuned for fast movements, making it a boon for a sweaty gamer.</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 won't use the fan: </strong>Though it's still a solid gaming mouse without the fan, it is expensive, and you are adding to the weight for that airflow.</p></div></div></div></div><p>Then again, Pulsar's fanless<a href="https://eu.pulsar.gg/collections/feinmann/products/first-edition-feinmann-f01-gaming-mouse"> Feinmann F01</a> has all the same holes (though at almost 30 g lighter), so maybe Pulsar just likes the 'this thing took a couple of bullets, but it still works' look. I personally think Noctua's iconic beige and brown colour scheme makes the mouse look pretty decent despite all the gaps, but a <a href="https://en.wikipedia.org/wiki/Trypophobia">trypophobe</a> (warning, don't click on that link if you have trypophobia) may want to look for something a bit <em>less holey</em>.</p><p>Despite the holes, the F01 is no slouch in durability. I have intentionally tried to place pressure on the thinnest parts of its carbon composite shell, and it barely flexes. The same is true of the sides of the mouse, which hold in place despite me squeezing far harder than one would traditionally with a gaming mouse. Noctua made a series of "<a href="https://www.pcgamer.com/hardware/gaming-mice/noctua-shows-off-custom-built-torture-test-rigs-for-testing-fans-and-now-im-afraid-of-ever-setting-foot-in-the-noctua-factory/" target="_blank">custom-built torture-test rigs</a>" for testing the fan in the mouse, and I'm happy to say that despite my flailing around, it too holds up incredibly well. </p><p>Throwing the mouse from side to side or up and down doesn't catch the fan at all, making it a pretty smooth experience. This is not something that bothered me, but you can feel the fan humming just a little when off the pad. I can't feel the fan rumble on the highest mode when grounded on a mouse pad, but when picking it up to move across the pad, I feel a slight movement. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/7srdqRL5vNJJYrC27QZJpH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the front, next to its connector on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/friFHX8X84wvj2wPuZvTqH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse  to the right of its dongle on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uu7mDoQv8SCizNFV4FRSpH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the left with its light on, near the connector on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gK3VvX4yuHJafJVoEH2FrH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse and dongle on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The fan is super easy to adjust too. Simply hold both of the buttons on the left-hand side, and push the scroll wheel up or down to cycle through the four fan intensities (plus one mode for it being off entirely). On the highest intensity (four), you can certainly hear the fan spin, but it roughly matches the noise of my rig, and I tend to play games and work with headphones anyway. It becomes near silent on intensity one and two, with three being notable, but only in a quiet room. </p><p>One thing that surprised me after a couple of days of using the mouse is that I genuinely missed the fan when I briefly swapped to a different mouse. This elevates it in my mind from a gimmick to a niche feature. But it's a niche feature you are paying nearly $200 for, and that's a hefty cost when you can get lighter competitive mouse for less. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Yp2VMzeegTtTLGzspgHRaH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk from the top left, close up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JSJVzaFRN9wJLQ5UxmaEoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk from the back right, up close" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Pulsar calls it the "mouse that breathes", which is far less appealing than I assume Pulsar thought it is. But that does feel like an accurate description of how the fan works. It doesn't blast your hand with air; instead, it feels like a cool breeze gently caressing your palm. Or maybe a less gross visual metaphor. A draft coming in through a window? Yeah, that doesn't sound as striking as 'mouse that breathes'.</p><p>One place I really benefited from the mouse is while I was playing Counter-Strike 2. When strafing through rooms, snapping sights on enemies, the game just has a capacity to make my palms sweat (Knees weak, arms heavy?), and yet I finished a game with my right hand feeling fresh. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Gg9vRYkjdk6yY2jHyyR5mi-1920-80.png" alt="Pulsar Feinmann F01 Noctua Edition MouseTester Result:" /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Y6DYqUQCaQzivbWvN7Kiji-1920-80.png" alt="Pulsar Feinmann F01 Noctua Edition MouseTester Result:" /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HPgJhoZqaASk7ZEhYT2aji-1920-80.png" alt="Pulsar Feinmann F01 Noctua Edition MouseTester Result:" /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure></figure><p>The mouse's ability to battle palm sweat helps in horror games like Crisol: Theater of Idols and in the Call of Duty Zombies-like Sker Ritual. It's also a super snappy mouse, and its optical switches are not only fast and efficient, but also offer a decent sound too. They produce a high ping that is satisfying without being too nasally in sound. Given the amount of open space in the mouse, I was concerned there would be a reverb of some kind, but the sound is well engineered. </p><div><blockquote><p>Even with the fan off, it's a solid gaming mouse. </p></blockquote></div><p>The over 70-gram mouse is a tad heavy, and you notice that when rapidly sliding it around the mousepad, but it's well balanced in the hand, which makes picking it up easy, and the PTFE feet are plenty smooth too. My preference would be to knock 15 or so grams off the mouse, but it doesn't handle the weight poorly. </p><p>And it's not just solid for competitive play either. In everyday use, the mouse is super comfortable to place the palm on, and the four different fan modes offer a decent degree of thermal customisation. Even with the fan off, it's a solid gaming mouse. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/imYj3Lxgg3ye3niEpUjLpH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the front left on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zk4Aw7SZtSG2y8kJncNJoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the back right on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xvNpP7g7ybFP6fmp2FXMkH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the front on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jsZHumd3pRDG32qQZu6HoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk from the right hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5tCAPHoXad4NQGHeonbRoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk, from the left hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NwP9RM7xjSo3HrYubCM9pH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk, from the bottom, showing the Feinmann logo" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In paint simulator SuchArt, I found the sensor to be super responsive and accurate, and the fan helped sustain my painting sessions. The weight of the mouse is downright comforting in SuchArt's more relaxed environment, and makes slow, smooth movement a breeze. </p><p>Unfortunately, though, in addition to the weight, there are other compromises to make such a mouse, and one of the big ones is battery life. The 500mAh battery drains super quickly, with it losing just under half of its charge in just over two hours in 8,000 Hz polling with the fan set to max. Even in 1,000 Hz polling mode, it drains quite quickly, with it going down by 20% in just under two hours. That means, with the fan set to max, you can expect to charge it every day or two if you work from home or game a lot. </p><p>With a charging dock or smart battery system (like the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/">Glorious Model O 3 wireless</a> has), that could be okay, but going without means you either plug it into a USB Type-C every night before bed, or don't bother with the wireless mode. </p><div><blockquote><p>Many of the best gaming mice, like the Razer Viper V4 Pro, are cheaper, with better battery life, and a lighter weight</p></blockquote></div><p>And speaking of its wireless mode, the F01 Noctua Edition comes with a neat dongle, which not only connects the mouse to your rig, but also has two buttons. The right side changes DPI, and the left side is a function button, which initially flits through profiles, but it can change the fan in the mouse, swap polling rate, change liftoff distance and more. </p><p>I wouldn't set the left side of the dongle to DPI, as you can swap that from under the mouse, and I wouldn't set it to adjust fan speed, as you can change that from the mouse too. I think my choice for the left button would maybe be polling rate, so you can crank it up in competitive games for quicker responses and bring it back down in more casual games to save battery life, but this is admittedly a pretty niche use case. I like the dongle a good bit, and my only critique is that having it feature USB passthrough or some sort of charging system would really make up for the pretty poor battery life. </p><p>Another thing to consider here is the price. Many of the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a>, like the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, are cheaper, with better battery life, and a lighter weight. Even the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, and its revolutionary clicks, fetch the same price as the F01 Noctua edition. </p><p>As such, I'm left in a difficult space trying to sum up this breezy gaming mouse. On the one hand, it's got a super solid build, and some smart engineering in how its fan works, and with a great sensor and high polling, it even offers competitive-level play. Yet on the other hand, it's giving up weight and battery life for that fan, and putting a bigger battery in it would only increase that weight. And therefore, it sits just under competitive mice for performance, yet costs more money. </p><p>And it's far too expensive to justify buying for the fan alone. It feels like a niche on a niche, and though it's smartly made, you really need to want <em>exactly </em>what it offers to justify that asking price. It is, though, one of the most unique gaming mice I've used in a few years, and a great but hard-to-recommend bit of hardware as a result.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/pulsar-feinmann-f01-noctua-edition-review/</link>
                                                                            <description>
                            <![CDATA[ Breezy and comfortable, but I'm not a fan of its price and battery. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7Ck8uEtqvvSPUEMBEB3WBL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VwUWxAQNqmnvcuJzK3zznH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 11 Aug 2026 14:22:21 +0000</pubDate>                                                                                                                                <updated>Thu, 20 Aug 2026 08:56:40 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VwUWxAQNqmnvcuJzK3zznH-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk, from the back right showing off the Noctua logo]]></media:description>                                                            <media:text><![CDATA[The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk, from the back right showing off the Noctua logo]]></media:text>
                                <media:title type="plain"><![CDATA[The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk, from the back right showing off the Noctua logo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VwUWxAQNqmnvcuJzK3zznH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Pulsar Feinmann F01 Noctua Edition" data-widget-title=""></div><p>Would you believe me if I told you the Pulsar Feinmann F01 Noctua Edition is actually the second gaming mouse with a fan I've tried? Back in 2021, I had the unique experience of getting my clammy mitts on the Marsback Zephyr Pro, and I was… a fan.</p><p>But I can comfortably say that Pulsar's Feinmann F01 Noctua Edition is the most luxurious gaming mouse with a fan I've tried—a prestigious award, I know. It's loaded with great specs, like a Pulsar XS-2 sensor with up to 42,000 DPI and up to an 8,000 Hz polling rate. As such, it's not <em>just </em>a gaming mouse with a fan; it's a full-on competitive device. </p><p>I suspect the most 'love it or hate it' aspect of Pulsar and Noctua's Frankenstein gaming mouse won't actually have anything to do with the aforementioned fan but will instead be its honeycomb shell. In order for the fan to actually blow cold air on your palm, it needs room to do so, and the spaces in the shell are plenty. They also come with the added benefit of taking some weight off, which is needed because the F01 Noctua Edition is pretty heavy at 73 g.</p><div ><table><caption>Pulsar Feinmann F01 Noctua Edition Specs</caption><tbody><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>Pulsar XS-2</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired and wireless (2.4 GHz)</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Optical switches</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to<strong> </strong>8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>DPI</strong></p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p><strong>Acceleration</strong></p></td><td  ><p>70 G</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>800 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>RGB</strong></p></td><td  ><p>One RGB light</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>73 g</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>8-20 hours (depending on polling rate and fan speed)</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://us.pulsar.gg/products/noctua-feinmann-f01-gaming-mouse?variant=53226219372911" target="_blank">$180</a> | <a href="https://eu.pulsar.gg/products/noctua-feinmann-f01-gaming-mouse?variant=54883923362121" target="_blank">€199</a></p></td></tr></tbody></table></div><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> Your hands get sweaty while gaming: </strong>The fan is a joy to use, and fine-tuned for fast movements, making it a boon for a sweaty gamer.</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 won't use the fan: </strong>Though it's still a solid gaming mouse without the fan, it is expensive, and you are adding to the weight for that airflow.</p></div></div></div></div><p>Then again, Pulsar's fanless<a href="https://eu.pulsar.gg/collections/feinmann/products/first-edition-feinmann-f01-gaming-mouse"> Feinmann F01</a> has all the same holes (though at almost 30 g lighter), so maybe Pulsar just likes the 'this thing took a couple of bullets, but it still works' look. I personally think Noctua's iconic beige and brown colour scheme makes the mouse look pretty decent despite all the gaps, but a <a href="https://en.wikipedia.org/wiki/Trypophobia">trypophobe</a> (warning, don't click on that link if you have trypophobia) may want to look for something a bit <em>less holey</em>.</p><p>Despite the holes, the F01 is no slouch in durability. I have intentionally tried to place pressure on the thinnest parts of its carbon composite shell, and it barely flexes. The same is true of the sides of the mouse, which hold in place despite me squeezing far harder than one would traditionally with a gaming mouse. Noctua made a series of "<a href="https://www.pcgamer.com/hardware/gaming-mice/noctua-shows-off-custom-built-torture-test-rigs-for-testing-fans-and-now-im-afraid-of-ever-setting-foot-in-the-noctua-factory/" target="_blank">custom-built torture-test rigs</a>" for testing the fan in the mouse, and I'm happy to say that despite my flailing around, it too holds up incredibly well. </p><p>Throwing the mouse from side to side or up and down doesn't catch the fan at all, making it a pretty smooth experience. This is not something that bothered me, but you can feel the fan humming just a little when off the pad. I can't feel the fan rumble on the highest mode when grounded on a mouse pad, but when picking it up to move across the pad, I feel a slight movement. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/7srdqRL5vNJJYrC27QZJpH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the front, next to its connector on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/friFHX8X84wvj2wPuZvTqH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse  to the right of its dongle on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uu7mDoQv8SCizNFV4FRSpH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the left with its light on, near the connector on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gK3VvX4yuHJafJVoEH2FrH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse and dongle on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The fan is super easy to adjust too. Simply hold both of the buttons on the left-hand side, and push the scroll wheel up or down to cycle through the four fan intensities (plus one mode for it being off entirely). On the highest intensity (four), you can certainly hear the fan spin, but it roughly matches the noise of my rig, and I tend to play games and work with headphones anyway. It becomes near silent on intensity one and two, with three being notable, but only in a quiet room. </p><p>One thing that surprised me after a couple of days of using the mouse is that I genuinely missed the fan when I briefly swapped to a different mouse. This elevates it in my mind from a gimmick to a niche feature. But it's a niche feature you are paying nearly $200 for, and that's a hefty cost when you can get lighter competitive mouse for less. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Yp2VMzeegTtTLGzspgHRaH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk from the top left, close up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JSJVzaFRN9wJLQ5UxmaEoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk from the back right, up close" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Pulsar calls it the "mouse that breathes", which is far less appealing than I assume Pulsar thought it is. But that does feel like an accurate description of how the fan works. It doesn't blast your hand with air; instead, it feels like a cool breeze gently caressing your palm. Or maybe a less gross visual metaphor. A draft coming in through a window? Yeah, that doesn't sound as striking as 'mouse that breathes'.</p><p>One place I really benefited from the mouse is while I was playing Counter-Strike 2. When strafing through rooms, snapping sights on enemies, the game just has a capacity to make my palms sweat (Knees weak, arms heavy?), and yet I finished a game with my right hand feeling fresh. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Gg9vRYkjdk6yY2jHyyR5mi-1920-80.png" alt="Pulsar Feinmann F01 Noctua Edition MouseTester Result:" /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Y6DYqUQCaQzivbWvN7Kiji-1920-80.png" alt="Pulsar Feinmann F01 Noctua Edition MouseTester Result:" /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HPgJhoZqaASk7ZEhYT2aji-1920-80.png" alt="Pulsar Feinmann F01 Noctua Edition MouseTester Result:" /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure></figure><p>The mouse's ability to battle palm sweat helps in horror games like Crisol: Theater of Idols and in the Call of Duty Zombies-like Sker Ritual. It's also a super snappy mouse, and its optical switches are not only fast and efficient, but also offer a decent sound too. They produce a high ping that is satisfying without being too nasally in sound. Given the amount of open space in the mouse, I was concerned there would be a reverb of some kind, but the sound is well engineered. </p><div><blockquote><p>Even with the fan off, it's a solid gaming mouse. </p></blockquote></div><p>The over 70-gram mouse is a tad heavy, and you notice that when rapidly sliding it around the mousepad, but it's well balanced in the hand, which makes picking it up easy, and the PTFE feet are plenty smooth too. My preference would be to knock 15 or so grams off the mouse, but it doesn't handle the weight poorly. </p><p>And it's not just solid for competitive play either. In everyday use, the mouse is super comfortable to place the palm on, and the four different fan modes offer a decent degree of thermal customisation. Even with the fan off, it's a solid gaming mouse. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/imYj3Lxgg3ye3niEpUjLpH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the front left on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zk4Aw7SZtSG2y8kJncNJoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the back right on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xvNpP7g7ybFP6fmp2FXMkH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse from the front on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jsZHumd3pRDG32qQZu6HoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk from the right hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5tCAPHoXad4NQGHeonbRoH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk, from the left hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NwP9RM7xjSo3HrYubCM9pH-1920-80.jpg" alt="The Pulsar Feinmann F01 Noctua Edition gaming mouse on a wooden desk, from the bottom, showing the Feinmann logo" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In paint simulator SuchArt, I found the sensor to be super responsive and accurate, and the fan helped sustain my painting sessions. The weight of the mouse is downright comforting in SuchArt's more relaxed environment, and makes slow, smooth movement a breeze. </p><p>Unfortunately, though, in addition to the weight, there are other compromises to make such a mouse, and one of the big ones is battery life. The 500mAh battery drains super quickly, with it losing just under half of its charge in just over two hours in 8,000 Hz polling with the fan set to max. Even in 1,000 Hz polling mode, it drains quite quickly, with it going down by 20% in just under two hours. That means, with the fan set to max, you can expect to charge it every day or two if you work from home or game a lot. </p><p>With a charging dock or smart battery system (like the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/">Glorious Model O 3 wireless</a> has), that could be okay, but going without means you either plug it into a USB Type-C every night before bed, or don't bother with the wireless mode. </p><div><blockquote><p>Many of the best gaming mice, like the Razer Viper V4 Pro, are cheaper, with better battery life, and a lighter weight</p></blockquote></div><p>And speaking of its wireless mode, the F01 Noctua Edition comes with a neat dongle, which not only connects the mouse to your rig, but also has two buttons. The right side changes DPI, and the left side is a function button, which initially flits through profiles, but it can change the fan in the mouse, swap polling rate, change liftoff distance and more. </p><p>I wouldn't set the left side of the dongle to DPI, as you can swap that from under the mouse, and I wouldn't set it to adjust fan speed, as you can change that from the mouse too. I think my choice for the left button would maybe be polling rate, so you can crank it up in competitive games for quicker responses and bring it back down in more casual games to save battery life, but this is admittedly a pretty niche use case. I like the dongle a good bit, and my only critique is that having it feature USB passthrough or some sort of charging system would really make up for the pretty poor battery life. </p><p>Another thing to consider here is the price. Many of the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mice</a>, like the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, are cheaper, with better battery life, and a lighter weight. Even the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, and its revolutionary clicks, fetch the same price as the F01 Noctua edition. </p><p>As such, I'm left in a difficult space trying to sum up this breezy gaming mouse. On the one hand, it's got a super solid build, and some smart engineering in how its fan works, and with a great sensor and high polling, it even offers competitive-level play. Yet on the other hand, it's giving up weight and battery life for that fan, and putting a bigger battery in it would only increase that weight. And therefore, it sits just under competitive mice for performance, yet costs more money. </p><p>And it's far too expensive to justify buying for the fan alone. It feels like a niche on a niche, and though it's smartly made, you really need to want <em>exactly </em>what it offers to justify that asking price. It is, though, one of the most unique gaming mice I've used in a few years, and a great but hard-to-recommend bit of hardware as a result.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Pulsar to study how we all use our gaming mice to make them better, offering prizes to those who help them build the mouse of the future ]]></title>
                                                                                                <dc:content><![CDATA[ <p>How do you create a gaming mouse that sits comfortably in the palm of most gamers? With science, that's how. As such, Pulsar Gaming is taking matters into its own hands with a research study—and nine survey participants will get a gaming mouse for their trouble.</p><p>In collaboration with the High-Performance Human-Computer Interaction Lab at Yonsei University, Pulsar Gaming is setting out "to establish empirical design standards based on quantitative user data and actual behavioral patterns." In order to collect enough data, <a href="https://x.com/PulsarGears/status/2084897217597641115?s=20" target="_blank">Pulsar has invited the "global gamer community" via X</a> to fill out an academic survey.</p><p>You can find <a href="https://docs.google.com/forms/d/e/1FAIpQLSdoG87Wjgtx3OCcRBOQu0722llNCa9bXJtuB5B74oxSdhjBCA/viewform" target="_blank">the survey in question here</a>, and the response period is from August 5 until August 24. The survey is about 19 pages long, with questions available in English, Japanese, and Korean. Pulsar writes that responses will be used to create a "foundational baseline for engineering the next generation of gaming mice."</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>It's a fairly in-depth survey, with even just the first page asking everything from what sorts of games you play and how many gaming mice you've "meaningfully" used, to how long your phalanges are. Those are your fingers, not your toes, for those wondering.</p><p>If you fill out the 19-page survey, you'll be in with a chance of winning a random Pulsar Gaming mouse. Nine survey participants in total will be randomly selected, and these winners will then be contacted on August 26.</p><p>A survey is definitely one way to approach designing a fresh gaming mouse. <a href="https://www.pcgamer.com/hardware/gaming-mice/how-logitech-makes-and-tests-gaming-mice/#section-design" target="_blank">The dedicated Logitech lab our Jacob visited</a> in Switzerland is another. There, designers consider ideas such as 'making a lightweight mouse that is nothing but strands of plastic inside,' and use electrode pads to measure how different hand muscles interact with different mouse shapes.</p><p>Speaking of mouse maestro Jacob and Pulsar, it's worth noting he also highly rated the <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">X3 CrazyLight Mini gaming mouse</a> earlier this year—not to mention the many paragraphs he dedicated to his 'gaming mouse heaven', the Pulsar Playstore. </p><p>There's just one small problem: Our Jacob is based in the UK, and the Pulsar Playstore can only be found in Tokyo, Japan. Ah, well.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/pulsar-to-study-how-we-all-use-our-gaming-mice-to-make-them-better-offering-prizes-to-those-who-help-them-build-the-mouse-of-the-future/</link>
                                                                            <description>
                            <![CDATA[ Finger on the pulse. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XJEmDnUu4CFbGez8tVpLpE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hQTSykvd4eTkUSmpRkeumL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 05 Aug 2026 15:56:23 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hQTSykvd4eTkUSmpRkeumL-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Pulsar X3 CrazyLight Mini gaming mouse.]]></media:description>                                                            <media:text><![CDATA[A Pulsar X3 CrazyLight Mini gaming mouse.]]></media:text>
                                <media:title type="plain"><![CDATA[A Pulsar X3 CrazyLight Mini gaming mouse.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hQTSykvd4eTkUSmpRkeumL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>How do you create a gaming mouse that sits comfortably in the palm of most gamers? With science, that's how. As such, Pulsar Gaming is taking matters into its own hands with a research study—and nine survey participants will get a gaming mouse for their trouble.</p><p>In collaboration with the High-Performance Human-Computer Interaction Lab at Yonsei University, Pulsar Gaming is setting out "to establish empirical design standards based on quantitative user data and actual behavioral patterns." In order to collect enough data, <a href="https://x.com/PulsarGears/status/2084897217597641115?s=20" target="_blank">Pulsar has invited the "global gamer community" via X</a> to fill out an academic survey.</p><p>You can find <a href="https://docs.google.com/forms/d/e/1FAIpQLSdoG87Wjgtx3OCcRBOQu0722llNCa9bXJtuB5B74oxSdhjBCA/viewform" target="_blank">the survey in question here</a>, and the response period is from August 5 until August 24. The survey is about 19 pages long, with questions available in English, Japanese, and Korean. Pulsar writes that responses will be used to create a "foundational baseline for engineering the next generation of gaming mice."</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>It's a fairly in-depth survey, with even just the first page asking everything from what sorts of games you play and how many gaming mice you've "meaningfully" used, to how long your phalanges are. Those are your fingers, not your toes, for those wondering.</p><p>If you fill out the 19-page survey, you'll be in with a chance of winning a random Pulsar Gaming mouse. Nine survey participants in total will be randomly selected, and these winners will then be contacted on August 26.</p><p>A survey is definitely one way to approach designing a fresh gaming mouse. <a href="https://www.pcgamer.com/hardware/gaming-mice/how-logitech-makes-and-tests-gaming-mice/#section-design" target="_blank">The dedicated Logitech lab our Jacob visited</a> in Switzerland is another. There, designers consider ideas such as 'making a lightweight mouse that is nothing but strands of plastic inside,' and use electrode pads to measure how different hand muscles interact with different mouse shapes.</p><p>Speaking of mouse maestro Jacob and Pulsar, it's worth noting he also highly rated the <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">X3 CrazyLight Mini gaming mouse</a> earlier this year—not to mention the many paragraphs he dedicated to his 'gaming mouse heaven', the Pulsar Playstore. </p><p>There's just one small problem: Our Jacob is based in the UK, and the Pulsar Playstore can only be found in Tokyo, Japan. Ah, well.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Noctua shows off 'custom-built torture-test rigs' for testing fans, and now I'm afraid of ever setting foot in the Noctua factory ]]></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/3X1-gM_ckog" allowfullscreen></iframe></div></div><p>Noctua is one of the very <a href="https://www.pcgamer.com/best-pc-fans/" target="_blank">best fan</a> makers on the market, but introducing its fan into the <a href="https://www.pcgamer.com/hardware/gaming-mice/its-not-just-a-gimmick-noctua-is-working-with-pulsar-on-a-gaming-mouse-that-has-a-fan-in-it-to-cool-your-sweaty-palm/" target="_blank">Feinmann F01 Noctua Edition gaming mouse</a> seemed to involve a truly horrible sequence of fan tests. </p><p>Noctua has "custom-built torture-test rigs", all designed to put fans through their paces to see if they can withstand how the average gamer treats their mice. One video of six fans getting rapidly from left to right says, "This is what 30 sideways movements per second look like."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2082797374053753140"><p lang="en" dir="ltr">This is what 30 sideways movements per second look like. See how our custom-built torture-test rigs subjected the NF-A4x10 to forces of up to 20g and hundreds of thousands of cycles to validate it for the @PulsarGears Feinmann F01 Noctua Edition: https://t.co/IijYjNvhXP pic.twitter.com/Oi7FMxnvTQ<a href="https://twitter.com/cantworkitout/status/2082797374053753140">July 30, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Effectively, the new Noctua mouse has a fan inside, which then blows air on your palm as you play. I've had the chance to try it out in the PC Gamer office, and so far, it's surprisingly pleasant. But ultimately, if you are gaming, you will do a lot of sideways movement and will often pick the mouse up and tap the top of the table. Noctua wouldn't want its fan to break down in a game, and it has taken to its <a href="https://www.noctua.at/en/expertise/blog/torture-testing-fans-our-validation-procedures-for-pulsars-noctua-edition-mouse" target="_blank">blog to go over its testing methodology</a>. </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>One test, conveniently named the 'drop test', has a series of fans on a motor that is picked up by a wheel and then dropped rapidly. You can see a video of that particular test in action below. </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/l5rSeI4qz7w" allowfullscreen></iframe></div></div><p>The results, according to Noctua, are positive for both tests. It says, "The answer to the question of how long NF-A4x10 fans can survive this type of torture is simple: surprisingly long!"</p><p>The horizontal test, pushing 12 fans back and forth rapidly, stopped after 280,000 cycles as one of the fans had failed. However, that turned out to be a bearing issue with the tape that fixed the fan coming loose. </p><p>In the vertical drop test, all eight fans were still functional after 20,000 drops. "After another 5000 drops, all the fans had their impellers pop out due to failures of the bearing lock-ring, but by this time, the foam padding at the base of the test setup that we used to soften the impact was completely shattered, so the impact force had become much higher than our accelerometer could measure."</p><p>So it seems like the gaming mouse is ready for the big league (ie gamers throwing their mice around because a monster has popped up on-screen). We'll just have to see how it fares for gaming in its other aspects. I have my hands on one, so you can expect my thoughts soon, though I don't anticipate dropping it 20,000 times. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/noctua-shows-off-custom-built-torture-test-rigs-for-testing-fans-and-now-im-afraid-of-ever-setting-foot-in-the-noctua-factory/</link>
                                                                            <description>
                            <![CDATA[ I've only just heard of it, but I'm now afraid of being put in Noctua's torture-test rig. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PuQZV3A4pJqPC96jcmdEfP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qTAH77DWNPNNr8XXUSgGsA-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Mon, 03 Aug 2026 12:40:21 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/qTAH77DWNPNNr8XXUSgGsA-1920-80.png">
                                                            <media:credit><![CDATA[Noctua]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Noctua&#039;s Fan validation setup for vertical movement, aka the torture-test rig for fans]]></media:description>                                                            <media:text><![CDATA[Noctua&#039;s Fan validation setup for vertical movement, aka the torture-test rig for fans]]></media:text>
                                <media:title type="plain"><![CDATA[Noctua&#039;s Fan validation setup for vertical movement, aka the torture-test rig for fans]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qTAH77DWNPNNr8XXUSgGsA-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/3X1-gM_ckog" allowfullscreen></iframe></div></div><p>Noctua is one of the very <a href="https://www.pcgamer.com/best-pc-fans/" target="_blank">best fan</a> makers on the market, but introducing its fan into the <a href="https://www.pcgamer.com/hardware/gaming-mice/its-not-just-a-gimmick-noctua-is-working-with-pulsar-on-a-gaming-mouse-that-has-a-fan-in-it-to-cool-your-sweaty-palm/" target="_blank">Feinmann F01 Noctua Edition gaming mouse</a> seemed to involve a truly horrible sequence of fan tests. </p><p>Noctua has "custom-built torture-test rigs", all designed to put fans through their paces to see if they can withstand how the average gamer treats their mice. One video of six fans getting rapidly from left to right says, "This is what 30 sideways movements per second look like."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2082797374053753140"><p lang="en" dir="ltr">This is what 30 sideways movements per second look like. See how our custom-built torture-test rigs subjected the NF-A4x10 to forces of up to 20g and hundreds of thousands of cycles to validate it for the @PulsarGears Feinmann F01 Noctua Edition: https://t.co/IijYjNvhXP pic.twitter.com/Oi7FMxnvTQ<a href="https://twitter.com/cantworkitout/status/2082797374053753140">July 30, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Effectively, the new Noctua mouse has a fan inside, which then blows air on your palm as you play. I've had the chance to try it out in the PC Gamer office, and so far, it's surprisingly pleasant. But ultimately, if you are gaming, you will do a lot of sideways movement and will often pick the mouse up and tap the top of the table. Noctua wouldn't want its fan to break down in a game, and it has taken to its <a href="https://www.noctua.at/en/expertise/blog/torture-testing-fans-our-validation-procedures-for-pulsars-noctua-edition-mouse" target="_blank">blog to go over its testing methodology</a>. </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>One test, conveniently named the 'drop test', has a series of fans on a motor that is picked up by a wheel and then dropped rapidly. You can see a video of that particular test in action below. </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/l5rSeI4qz7w" allowfullscreen></iframe></div></div><p>The results, according to Noctua, are positive for both tests. It says, "The answer to the question of how long NF-A4x10 fans can survive this type of torture is simple: surprisingly long!"</p><p>The horizontal test, pushing 12 fans back and forth rapidly, stopped after 280,000 cycles as one of the fans had failed. However, that turned out to be a bearing issue with the tape that fixed the fan coming loose. </p><p>In the vertical drop test, all eight fans were still functional after 20,000 drops. "After another 5000 drops, all the fans had their impellers pop out due to failures of the bearing lock-ring, but by this time, the foam padding at the base of the test setup that we used to soften the impact was completely shattered, so the impact force had become much higher than our accelerometer could measure."</p><p>So it seems like the gaming mouse is ready for the big league (ie gamers throwing their mice around because a monster has popped up on-screen). We'll just have to see how it fares for gaming in its other aspects. I have my hands on one, so you can expect my thoughts soon, though I don't anticipate dropping it 20,000 times. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Mchose K7 V2 Ultra+ review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Mchose K7 V2 Ultra+" data-widget-title=""></div><p>I've been a very happy chappy ever since discovering the wonders of the Chinese 'clone' mouse market. Brands in this market attempt to deliver quality gaming mice that take after popular shapes by mainstream brands, but for a lot less money. I was sceptical at first, but my experience with Mchose mice has squashed my scepticism, and this <a href="https://www.mchose.store/products/mchose-k7-v2-series-wireless-gaming-mouse" target="_blank">K7 V2 Ultra+</a> is a fine example.</p><p>It is, for all intents and purposes, a Razer Viper V3/V4 Pro clone, and the latter is currently the absolute <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market today. I say V3/V4 Pro because it sits between the two, using an overclocked PixArt PAW3955 TI sensor that hits up to 50,000 DPI. That's PixArt's flagship <em>market-available </em>sensor, and the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a> has its own top-of-the-line, custom PixArt sensor that has the same DPI as this but higher IPS capability and so on. Still, the K7 V2's sensor <em>is </em>flagship as far as what is actually on the market.</p><p>Regarding just the shape, I notice no difference between this and the Viper V4 Pro, which tracks, given <a href="https://www.eloshapes.com/mouse/compare?p=razer-viper-v4-pro-vs.-mchose-k7-v2-ultra-plus" target="_blank">EloShapes shows no difference</a> either. There is, of course, a difference in build quality (and no optical switches), but that's less to do with the Mchose and more to do with the Viper being practically flawless—the best build quality I've seen in any mouse. The K7 V2 Ultra+ doesn't match that, but it does match other premium mice in terms of build quality.</p><div ><table><caption>K7 V2 Ultra+ specs</caption><tbody><tr><td class="firstcol " ><p><strong>Buttons</strong></p></td><td  ><p>5</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>USB Type-C wired, 2.4 GHz wireless, Bluetooth</p></td></tr><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>PixArt PAW3955 TI</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Omron mechanical</p></td></tr><tr><td class="firstcol " ><p><strong>Feet</strong></p></td><td  ><p>PTFE</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>50,000</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>59 g</p></td></tr><tr><td class="firstcol " ><p><strong>Max acceleration</strong></p></td><td  ><p>60 G</p></td></tr><tr><td class="firstcol " ><p><strong>Max speed</strong></p></td><td  ><p>750 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8K</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>Only on stand/receiver</p></td></tr><tr><td class="firstcol " ><p><strong>Included extras</strong></p></td><td  ><p>USB-C cable, dongle, charging receiver/stand, grip tape</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.mchose.store/products/mchose-k7-v2-series-wireless-gaming-mouse" target="_blank">$89</a> / <a href="https://www.mchose.store/products/mchose-k7-v2-series-wireless-gaming-mouse" target="_blank">£67</a></p></td></tr></tbody></table></div><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 great shape for less: </strong>The Viper V3/V4 Pro shape is loved by many for good reason, and here you get that exact shape for less than the official Razer mice.<br><br>✅ <strong>You want convenience:</strong> The wireless charging stand (which is also a wireless receiver) makes it incredibly easy to keep this mouse charged.</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 want the best quality on the market: </strong>This Mchose mouse is very high quality, but it doesn't quite match some more expensive premium mice like the Razer Viper V4 Pro.<br><br><strong>❌ You don't care about competitive gaming:</strong> A flagship sensor and minimal design might not be worth the cost if you don't play competitive games.</p></div></div></div></div><p>To be more specific, it feels lovely under the palm, is sturdy, and I have zero complaints when actually using it in-game, but if I'm pulling out my metaphorical magnifying glass for inspection, it's not completely perfect. I've noticed there's a slight amount of friction to the left mouse button before it actuates depending on where I press it. Plus it is, of course, heavier than the Viper V3 Pro and V4 Pro as it weighs 59 g, whereas the former are 54 g and 49 g respectively.</p><p>But those are pretty small sacrifices to make for getting the same Viper shape and a very performant sensor for a little over half the price of a bona fide V3 Pro or V4 Pro. It's not as cheap as <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">some of Mchose's other options</a>—in fact, not even some <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-l7-pro-review/" target="_blank">rather premium-feeling ones</a>—but for a flagship sensor and a Viper shape, it sits right with me.</p><p>There's another thing to note, which is that you're getting a wireless charger in the 2.4 GHz receiver, which is a fantastic choice and works really well. We've seen similar from the <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a>, but this one connects and charges magnetically and wirelessly rather than via some pins. Both are good, but the magnetic system might have the edge for longevity (no pins to damage) and how easy it is to just slap on top. It's super convenient and has the added benefit of keeping the receiver weighty enough to stay put, in combination with its sticky base lining.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GXR3rcR4VWtr6zwhiTUmVg" name="IMG_3407" alt="An Mchose K7 V2 Ultra+ gaming mouse." src="https://cdn.mos.cms.futurecdn.net/GXR3rcR4VWtr6zwhiTUmVg-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It charges pretty quickly when on the stand: about 1% every minute, if not a little faster. Not that that matters much, because after using this thing for three or four days of pretty extensive work and gaming it only dropped to about 80%. And chucking it on top of the charging stand is effortless, provided you remember to do so.</p><p>The lighting on the receiver looks gorgeous too, primarily because it runs around the bottom so it looks a lot like a more subtle underglow than anything too garish. Though it would be more useful if it changed colour based on the mouse's battery life rather than whatever colour(s) you set it to.</p><p>These colours and effects can be changed in the software, which is available either locally or online. It is of course great that there's a web-based version; however it does take a while to load. But once you're in, you get access to every setting you might want, including things like lift-off distance (LOD) and even sensor rotation.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SVQhT7mcUdaGwXwkwYLjSg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/H8zPD8RuGFS7Qs8EBWLoPg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/P8NffmgR9qp6JLJv8Xm8Pg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/62hkodFmEqbCq2hXKFn8Ug-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3Jhu5mDeyeEgYwCvtQudVg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Getting to the meat and potatoes of competitive gaming, which is the use case this mouse is aimed at given the Viper inspo, everything is flawless. Playing Counter-Strike 2, I've had zero problems with connectivity or tracking.</p><p>The Viper shape is wonderful too, keeping my hand nice and steady when holding angles, so I can say it's at the very least pleasant for a relaxed palm grip. And given it's the <a href="https://prosettings.net/gear/stats/" target="_blank">most-used mouse by Valorant pros</a> and close to that for Counter-Strike pros, I think many others would agree.</p><p>The Viper shape is also good for claw and fingertip grips, making it pretty versatile, just like Logitech's G Pro/Superlight shape. In fact, it's often considered better for these than for palm grip, but I use a hybrid palm grip and do enjoy it.</p><p>The last two sprinkles of icing on the cake are its connectivity options and its aesthetic. Some competitive gaming mice don't bother including Bluetooth, but this one does and I found it to work very well. It connects to my laptop instantly and I can now immediately switch between laptop and PC by a flick of the underside switch from Bluetooth to 2.4 GHz.</p><p>Finally, although it's still a pretty plain mouse in black, it does have a little golden flair to it on the logo, side buttons, and scroll wheel. I think it looks rather classy, which isn't always the case with golden trimmings. The blue version also looks gorgeous just judging from the product photos, though I've not seen that one in person.</p><p>In all, I really can't complain about anything in this mouse for the price. It would be nice if there was that extra tidbit of attention paid to things like button click quality, and of course it would have been nice to see this closer to 50 g. But I don't think I can expect to get that without stepping up into the $100+ range, especially given the included charging stand and wireless charging internals.</p><p>Mchose has stayed on the right side of the mark here, and I'm especially looking forward to any potential discounts in future which sweeten the deal even further. Though even without that sweetening, it's got my approval.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/mchose-k7-v2-ultra-review/</link>
                                                                            <description>
                            <![CDATA[ Great specs with a Viper V3/V4 Pro's shape, for less. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oFURMEnCZ5FiByvBsJjKtG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JPWDDosBpyPGimW3CEGTPg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 31 Jul 2026 11:12:44 +0000</pubDate>                                                                                                                                <updated>Fri, 31 Jul 2026 11:13:42 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JPWDDosBpyPGimW3CEGTPg-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Mchose K7 V2 Ultra+ gaming mouse.]]></media:description>                                                            <media:text><![CDATA[An Mchose K7 V2 Ultra+ gaming mouse.]]></media:text>
                                <media:title type="plain"><![CDATA[An Mchose K7 V2 Ultra+ gaming mouse.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JPWDDosBpyPGimW3CEGTPg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Mchose K7 V2 Ultra+" data-widget-title=""></div><p>I've been a very happy chappy ever since discovering the wonders of the Chinese 'clone' mouse market. Brands in this market attempt to deliver quality gaming mice that take after popular shapes by mainstream brands, but for a lot less money. I was sceptical at first, but my experience with Mchose mice has squashed my scepticism, and this <a href="https://www.mchose.store/products/mchose-k7-v2-series-wireless-gaming-mouse" target="_blank">K7 V2 Ultra+</a> is a fine example.</p><p>It is, for all intents and purposes, a Razer Viper V3/V4 Pro clone, and the latter is currently the absolute <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market today. I say V3/V4 Pro because it sits between the two, using an overclocked PixArt PAW3955 TI sensor that hits up to 50,000 DPI. That's PixArt's flagship <em>market-available </em>sensor, and the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a> has its own top-of-the-line, custom PixArt sensor that has the same DPI as this but higher IPS capability and so on. Still, the K7 V2's sensor <em>is </em>flagship as far as what is actually on the market.</p><p>Regarding just the shape, I notice no difference between this and the Viper V4 Pro, which tracks, given <a href="https://www.eloshapes.com/mouse/compare?p=razer-viper-v4-pro-vs.-mchose-k7-v2-ultra-plus" target="_blank">EloShapes shows no difference</a> either. There is, of course, a difference in build quality (and no optical switches), but that's less to do with the Mchose and more to do with the Viper being practically flawless—the best build quality I've seen in any mouse. The K7 V2 Ultra+ doesn't match that, but it does match other premium mice in terms of build quality.</p><div ><table><caption>K7 V2 Ultra+ specs</caption><tbody><tr><td class="firstcol " ><p><strong>Buttons</strong></p></td><td  ><p>5</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>USB Type-C wired, 2.4 GHz wireless, Bluetooth</p></td></tr><tr><td class="firstcol " ><p><strong>Sensor</strong></p></td><td  ><p>PixArt PAW3955 TI</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Omron mechanical</p></td></tr><tr><td class="firstcol " ><p><strong>Feet</strong></p></td><td  ><p>PTFE</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>50,000</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>59 g</p></td></tr><tr><td class="firstcol " ><p><strong>Max acceleration</strong></p></td><td  ><p>60 G</p></td></tr><tr><td class="firstcol " ><p><strong>Max speed</strong></p></td><td  ><p>750 IPS</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8K</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>Only on stand/receiver</p></td></tr><tr><td class="firstcol " ><p><strong>Included extras</strong></p></td><td  ><p>USB-C cable, dongle, charging receiver/stand, grip tape</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.mchose.store/products/mchose-k7-v2-series-wireless-gaming-mouse" target="_blank">$89</a> / <a href="https://www.mchose.store/products/mchose-k7-v2-series-wireless-gaming-mouse" target="_blank">£67</a></p></td></tr></tbody></table></div><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 great shape for less: </strong>The Viper V3/V4 Pro shape is loved by many for good reason, and here you get that exact shape for less than the official Razer mice.<br><br>✅ <strong>You want convenience:</strong> The wireless charging stand (which is also a wireless receiver) makes it incredibly easy to keep this mouse charged.</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 want the best quality on the market: </strong>This Mchose mouse is very high quality, but it doesn't quite match some more expensive premium mice like the Razer Viper V4 Pro.<br><br><strong>❌ You don't care about competitive gaming:</strong> A flagship sensor and minimal design might not be worth the cost if you don't play competitive games.</p></div></div></div></div><p>To be more specific, it feels lovely under the palm, is sturdy, and I have zero complaints when actually using it in-game, but if I'm pulling out my metaphorical magnifying glass for inspection, it's not completely perfect. I've noticed there's a slight amount of friction to the left mouse button before it actuates depending on where I press it. Plus it is, of course, heavier than the Viper V3 Pro and V4 Pro as it weighs 59 g, whereas the former are 54 g and 49 g respectively.</p><p>But those are pretty small sacrifices to make for getting the same Viper shape and a very performant sensor for a little over half the price of a bona fide V3 Pro or V4 Pro. It's not as cheap as <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">some of Mchose's other options</a>—in fact, not even some <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-l7-pro-review/" target="_blank">rather premium-feeling ones</a>—but for a flagship sensor and a Viper shape, it sits right with me.</p><p>There's another thing to note, which is that you're getting a wireless charger in the 2.4 GHz receiver, which is a fantastic choice and works really well. We've seen similar from the <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a>, but this one connects and charges magnetically and wirelessly rather than via some pins. Both are good, but the magnetic system might have the edge for longevity (no pins to damage) and how easy it is to just slap on top. It's super convenient and has the added benefit of keeping the receiver weighty enough to stay put, in combination with its sticky base lining.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GXR3rcR4VWtr6zwhiTUmVg" name="IMG_3407" alt="An Mchose K7 V2 Ultra+ gaming mouse." src="https://cdn.mos.cms.futurecdn.net/GXR3rcR4VWtr6zwhiTUmVg-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It charges pretty quickly when on the stand: about 1% every minute, if not a little faster. Not that that matters much, because after using this thing for three or four days of pretty extensive work and gaming it only dropped to about 80%. And chucking it on top of the charging stand is effortless, provided you remember to do so.</p><p>The lighting on the receiver looks gorgeous too, primarily because it runs around the bottom so it looks a lot like a more subtle underglow than anything too garish. Though it would be more useful if it changed colour based on the mouse's battery life rather than whatever colour(s) you set it to.</p><p>These colours and effects can be changed in the software, which is available either locally or online. It is of course great that there's a web-based version; however it does take a while to load. But once you're in, you get access to every setting you might want, including things like lift-off distance (LOD) and even sensor rotation.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SVQhT7mcUdaGwXwkwYLjSg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/H8zPD8RuGFS7Qs8EBWLoPg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/P8NffmgR9qp6JLJv8Xm8Pg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/62hkodFmEqbCq2hXKFn8Ug-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3Jhu5mDeyeEgYwCvtQudVg-1920-80.jpg" alt="An Mchose K7 V2 Ultra+ gaming mouse." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Getting to the meat and potatoes of competitive gaming, which is the use case this mouse is aimed at given the Viper inspo, everything is flawless. Playing Counter-Strike 2, I've had zero problems with connectivity or tracking.</p><p>The Viper shape is wonderful too, keeping my hand nice and steady when holding angles, so I can say it's at the very least pleasant for a relaxed palm grip. And given it's the <a href="https://prosettings.net/gear/stats/" target="_blank">most-used mouse by Valorant pros</a> and close to that for Counter-Strike pros, I think many others would agree.</p><p>The Viper shape is also good for claw and fingertip grips, making it pretty versatile, just like Logitech's G Pro/Superlight shape. In fact, it's often considered better for these than for palm grip, but I use a hybrid palm grip and do enjoy it.</p><p>The last two sprinkles of icing on the cake are its connectivity options and its aesthetic. Some competitive gaming mice don't bother including Bluetooth, but this one does and I found it to work very well. It connects to my laptop instantly and I can now immediately switch between laptop and PC by a flick of the underside switch from Bluetooth to 2.4 GHz.</p><p>Finally, although it's still a pretty plain mouse in black, it does have a little golden flair to it on the logo, side buttons, and scroll wheel. I think it looks rather classy, which isn't always the case with golden trimmings. The blue version also looks gorgeous just judging from the product photos, though I've not seen that one in person.</p><p>In all, I really can't complain about anything in this mouse for the price. It would be nice if there was that extra tidbit of attention paid to things like button click quality, and of course it would have been nice to see this closer to 50 g. But I don't think I can expect to get that without stepping up into the $100+ range, especially given the included charging stand and wireless charging internals.</p><p>Mchose has stayed on the right side of the mark here, and I'm especially looking forward to any potential discounts in future which sweeten the deal even further. Though even without that sweetening, it's got my approval.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Keychron's gaming mouse firmware is going open-source, while the company critiques 'firmware you can't read, can't audit, can't change' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Keychron, the gaming peripheral creator, has developed a name for itself as a defender of open-source software over the last few years. It has an entire '<a href="https://www.keychron.com/collections/keychron-open-source?srsltid=AfmBOopfYxbEA4mqcSananWhw5SbpdPmCJesbhjHpuTgywKqgOwFtYYh" target="_blank">Open Source Design Project</a>', where it posts access to files to customise its keyboards, and it even uses ZMK and QMK, which are open-source software for keyboards. Open-source mouse firmware has gone unloved by the company, until now. </p><p><a href="https://x.com/KeychronMK/status/2082268414786379968?s=20" target="_blank">Keychron announced on X</a> that it's currently developing ZGM, an open-source gaming mouse software for use with its mice. The company plans to launch ZGM at the start of 2027. Keychron says in the announcement, "Every gaming mouse on the market runs firmware you can't read, can't audit, can't change. So we built it ourselves."</p><p>Alongside this, the company has published a <a href="https://zgm.gg/" target="_blank">new website</a>, explaining the benefits of open-source gaming mouse firmware and how it came about. The new software is built on Zephyr ROTS and designed to be scalable and modular, meaning it can support multiple hardware variants and can work with unique sensors, buttons, and scroll wheels without rewriting. </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>It's also designed with low-latency input in mind, and will support both wired and wireless mice. The benefit of it being open-source is that other users can contribute to it or fork it to make their own build. </p><p>Keychron points out that the software will work with the newly unveiled G6 HE, which is its 46 g wireless gaming mouse with a swappable battery, hybrid optical/magnetic switches, and a <a href="https://x.com/KeychronMK/status/2081219046272594277?s=20" target="_blank">pretty neat charging puck</a> too. Naturally, though open-source software is good to have, it won't work with just anything out of the digital box. It often needs fine-tuning for specific hardware, which is why Keychron clarifies it will work with the G6 HE. But because it's open-source, one could technically refine it for non-compatible hardware. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2082268414786379968"><p lang="en" dir="ltr">Keyboards have QMK. They have ZMK. Mice have… nothing. 🔒Every gaming mouse on the market runs firmware you can't read, can't audit, can't change.So we built it ourselves.ZGM — Zephyr Gaming Mouse. Open-source firmware for gaming mice, coming Q1 2027. The G6 HE will run… pic.twitter.com/naSdDXeMBh<a href="https://twitter.com/cantworkitout/status/2082268414786379968">July 29, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>If you want to keep an eye on the project, it currently has a <a href="https://github.com/Keychron/zgm" target="_blank">public GitHub repository</a>, but Keychron notes it is "currently in its early setup phase." The project mostly contains "project scaffolding, policy files, and the initial project direction" as of right now.</p><p>Still, with the likes of GMK already out there, open-source mouse firmware should bridge a gap between hardware and should give you unified language for both your Keychron mouse and keyboard. And an added benefit is that the more open-source projects that are out there, the more likely other companies are to follow suit. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/keychrons-gaming-mouse-firmware-is-going-open-source-while-the-company-critiques-firmware-you-cant-read-cant-audit-cant-change/</link>
                                                                            <description>
                            <![CDATA[ I'm always in favour of more open-source software. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RnHT87Raq94enLvxXRpWVB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 29 Jul 2026 14:24:18 +0000</pubDate>                                                                                                                                <updated>Wed, 29 Jul 2026 16:56:07 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Keychron MagOptic mouse switches]]></media:description>                                                            <media:text><![CDATA[Keychron MagOptic mouse switches]]></media:text>
                                <media:title type="plain"><![CDATA[Keychron MagOptic mouse switches]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Keychron, the gaming peripheral creator, has developed a name for itself as a defender of open-source software over the last few years. It has an entire '<a href="https://www.keychron.com/collections/keychron-open-source?srsltid=AfmBOopfYxbEA4mqcSananWhw5SbpdPmCJesbhjHpuTgywKqgOwFtYYh" target="_blank">Open Source Design Project</a>', where it posts access to files to customise its keyboards, and it even uses ZMK and QMK, which are open-source software for keyboards. Open-source mouse firmware has gone unloved by the company, until now. </p><p><a href="https://x.com/KeychronMK/status/2082268414786379968?s=20" target="_blank">Keychron announced on X</a> that it's currently developing ZGM, an open-source gaming mouse software for use with its mice. The company plans to launch ZGM at the start of 2027. Keychron says in the announcement, "Every gaming mouse on the market runs firmware you can't read, can't audit, can't change. So we built it ourselves."</p><p>Alongside this, the company has published a <a href="https://zgm.gg/" target="_blank">new website</a>, explaining the benefits of open-source gaming mouse firmware and how it came about. The new software is built on Zephyr ROTS and designed to be scalable and modular, meaning it can support multiple hardware variants and can work with unique sensors, buttons, and scroll wheels without rewriting. </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>It's also designed with low-latency input in mind, and will support both wired and wireless mice. The benefit of it being open-source is that other users can contribute to it or fork it to make their own build. </p><p>Keychron points out that the software will work with the newly unveiled G6 HE, which is its 46 g wireless gaming mouse with a swappable battery, hybrid optical/magnetic switches, and a <a href="https://x.com/KeychronMK/status/2081219046272594277?s=20" target="_blank">pretty neat charging puck</a> too. Naturally, though open-source software is good to have, it won't work with just anything out of the digital box. It often needs fine-tuning for specific hardware, which is why Keychron clarifies it will work with the G6 HE. But because it's open-source, one could technically refine it for non-compatible hardware. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2082268414786379968"><p lang="en" dir="ltr">Keyboards have QMK. They have ZMK. Mice have… nothing. 🔒Every gaming mouse on the market runs firmware you can't read, can't audit, can't change.So we built it ourselves.ZGM — Zephyr Gaming Mouse. Open-source firmware for gaming mice, coming Q1 2027. The G6 HE will run… pic.twitter.com/naSdDXeMBh<a href="https://twitter.com/cantworkitout/status/2082268414786379968">July 29, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>If you want to keep an eye on the project, it currently has a <a href="https://github.com/Keychron/zgm" target="_blank">public GitHub repository</a>, but Keychron notes it is "currently in its early setup phase." The project mostly contains "project scaffolding, policy files, and the initial project direction" as of right now.</p><p>Still, with the likes of GMK already out there, open-source mouse firmware should bridge a gap between hardware and should give you unified language for both your Keychron mouse and keyboard. And an added benefit is that the more open-source projects that are out there, the more likely other companies are to follow suit. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ We now have independent testing confirming Razer's latest innovative mouse sensor tech does what it says it does ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market right now is the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. It's the best because it's light, very well-built, performant, and has great battery life. This last quality—its battery life—is largely thanks to Razer's new <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">FrameSync tech</a>, which is kind of like G-Sync but for a mouse sensor rather than a monitor's refresh rate. And now we have <a href="https://x.com/Tw1tterIsGood/status/2080367158991745294?s=20" target="_blank">independent testing</a> confirming that the new and innovative tech works as Razer describes it.</p><p>We had indirect confirmation of it before just from the fact that the Viper V4 Pro's battery life is so good (180 hours at 1 kHz polling), but it's reassuring and, frankly, just cool to see it confirmed regardless. </p><p>With any gaming mouse, there are two main things going on: optical scanning and polling. In the first case, the sensor scans for movement across your mouse pad in many snapshots per second. In the latter, the PC polls for (requests) that movement data from the mouse. </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>Well, actually, there are <em>three </em>things going on, because in between those two lies the microcontroller unit (MCU), which prepares the sensor data to hand off to the PC when it polls. Razer's innovation with FrameSync is to get all three of these aligned by making the sensor only scan at the same time it's polled for, meaning it can keep things responsive but also keep the sensor scan-outs low and save power.</p><p>Anyways, all this is great on paper, but how could we even confirm it? Well, <a href="https://x.com/Tw1tterIsGood/status/2080367158991745294?s=20" target="_blank">X user</a> and peripheral <a href="https://www.youtube.com/@piaknow/" target="_blank">YouTuber piaknow</a> has figured it out and put FrameSync to the test. Using a cornucopia of wires and a <a href="https://www.testequity.com/product/31585-1-DS1102Z-E" target="_blank">Rigol DS1102Z-E oscilloscope</a>, they confirm that "Razer's FrameSync is REAL."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2080367158991745294"><p lang="en" dir="ltr">Razer's framesync is REAL pic.twitter.com/D0jdc12hnc<a href="https://twitter.com/cantworkitout/status/2080367158991745294">July 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>They explain: "Yellow line shows the USB signal and blue line shows the sensor light source. The phase between them being fixed shows that they are actually synchronized, as advertised."</p><p>So yep, it seems it's true: Razer FrameSync does, in fact, sync the sensor to the polling rate. Although it's worth noting that one commenter claims they get some small deltas, and piaknow confirms "I do get 0.25 ms intervals periodically... but because the counts are doubled at the same time, maybe it's simply packet loss due to some type of periodical extra process?"</p><p>I'm not the one with the oscilloscope, so I certainly can't say, but at any rate the periodical deltas don't seem too big, and certainly not enough to throw off the overall oscilloscope picture and the fact that FrameSync is seemingly doing what it says on the tin, just perhaps not absolutely perfectly.</p><p>That being said, there's apparently still a DPI downshift problem, which I've <a href="https://www.pcgamer.com/hardware/gaming-mice/apparently-some-of-the-best-gaming-mice-arent-staying-at-the-right-dpi-when-moved-slowly/" target="_blank">explained previously</a>. Sensors, eh, there's more to them than we might think! For my part, I haven't noticed any issues with the Viper V4 Pro's sensor, and it's great to see some genuinely new tech confirmed independently.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/we-now-have-independent-testing-confirming-razers-latest-innovative-mouse-sensor-tech-does-what-it-says-it-does/</link>
                                                                            <description>
                            <![CDATA[ Not that I doubted it, but it's cool to see it confirmed. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">536chyzWpMAfKXqzEBYChN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kf6LdAo43fssHyds6f8nSh-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 24 Jul 2026 12:33:28 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kf6LdAo43fssHyds6f8nSh-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The orbtastic dongle for the Razer Viper V4 Pro.]]></media:description>                                                            <media:text><![CDATA[The orbtastic dongle for the Razer Viper V4 Pro.]]></media:text>
                                <media:title type="plain"><![CDATA[The orbtastic dongle for the Razer Viper V4 Pro.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kf6LdAo43fssHyds6f8nSh-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market right now is the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. It's the best because it's light, very well-built, performant, and has great battery life. This last quality—its battery life—is largely thanks to Razer's new <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">FrameSync tech</a>, which is kind of like G-Sync but for a mouse sensor rather than a monitor's refresh rate. And now we have <a href="https://x.com/Tw1tterIsGood/status/2080367158991745294?s=20" target="_blank">independent testing</a> confirming that the new and innovative tech works as Razer describes it.</p><p>We had indirect confirmation of it before just from the fact that the Viper V4 Pro's battery life is so good (180 hours at 1 kHz polling), but it's reassuring and, frankly, just cool to see it confirmed regardless. </p><p>With any gaming mouse, there are two main things going on: optical scanning and polling. In the first case, the sensor scans for movement across your mouse pad in many snapshots per second. In the latter, the PC polls for (requests) that movement data from the mouse. </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>Well, actually, there are <em>three </em>things going on, because in between those two lies the microcontroller unit (MCU), which prepares the sensor data to hand off to the PC when it polls. Razer's innovation with FrameSync is to get all three of these aligned by making the sensor only scan at the same time it's polled for, meaning it can keep things responsive but also keep the sensor scan-outs low and save power.</p><p>Anyways, all this is great on paper, but how could we even confirm it? Well, <a href="https://x.com/Tw1tterIsGood/status/2080367158991745294?s=20" target="_blank">X user</a> and peripheral <a href="https://www.youtube.com/@piaknow/" target="_blank">YouTuber piaknow</a> has figured it out and put FrameSync to the test. Using a cornucopia of wires and a <a href="https://www.testequity.com/product/31585-1-DS1102Z-E" target="_blank">Rigol DS1102Z-E oscilloscope</a>, they confirm that "Razer's FrameSync is REAL."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2080367158991745294"><p lang="en" dir="ltr">Razer's framesync is REAL pic.twitter.com/D0jdc12hnc<a href="https://twitter.com/cantworkitout/status/2080367158991745294">July 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>They explain: "Yellow line shows the USB signal and blue line shows the sensor light source. The phase between them being fixed shows that they are actually synchronized, as advertised."</p><p>So yep, it seems it's true: Razer FrameSync does, in fact, sync the sensor to the polling rate. Although it's worth noting that one commenter claims they get some small deltas, and piaknow confirms "I do get 0.25 ms intervals periodically... but because the counts are doubled at the same time, maybe it's simply packet loss due to some type of periodical extra process?"</p><p>I'm not the one with the oscilloscope, so I certainly can't say, but at any rate the periodical deltas don't seem too big, and certainly not enough to throw off the overall oscilloscope picture and the fact that FrameSync is seemingly doing what it says on the tin, just perhaps not absolutely perfectly.</p><p>That being said, there's apparently still a DPI downshift problem, which I've <a href="https://www.pcgamer.com/hardware/gaming-mice/apparently-some-of-the-best-gaming-mice-arent-staying-at-the-right-dpi-when-moved-slowly/" target="_blank">explained previously</a>. Sensors, eh, there's more to them than we might think! For my part, I haven't noticed any issues with the Viper V4 Pro's sensor, and it's great to see some genuinely new tech confirmed independently.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Hot swappable mouse batteries might be the hot new trend as it looks like Wallhack's first ever mouse will have them ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Wallhack (previously SkyPad, if you weren't aware) has <a href="https://x.com/WALLHACK_KR/status/2079159471150940581" target="_blank">teased a gaming mouse</a> that will be announced on July 24. This will be the company's first gaming mouse, having previously stuck to high-performance mouse pads, sleeves, and skates.</p><p>There must just be something irresistible about hot swappable batteries. This mouse looks to have them, as from the teaser trailer, we see a separate battery zooming into place. This also matches what peripheral reviewer <a href="https://x.com/mel0nFPS/status/2078116109950091508?s=20" target="_blank">mel0nFPS noted</a> about a <a href="https://x.com/WALLHACK_JP/status/2078072214503432522?s=20" target="_blank">previous image-only teaser</a>, as they predicted a "hot-swap battery system (250-300 mAh)."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2079219790590210364"><p lang="en" dir="ltr">Meet The M-001. More information on 2026.07.24 pic.twitter.com/lOdm8HAMxJ<a href="https://twitter.com/cantworkitout/status/2079219790590210364">July 20, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>I first saw a hot swappable mouse at Gamescom last year, when I was granted an early look at the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">Glorious Model O3</a>. Unfortunately that mouse failed to massively impress me for other reasons when I reviewed it (mostly mediocre tracking over wireless and stiff competition at such a high price), but I did like the battery system.</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>Since then, we've seen other companies are having a go at it. There's the <a href="https://store.angrymiao.com/products/am-infinity-mouse?srsltid=AfmBOoo5CyCXpCtfbAV-Zq6VKa4c8CeC_KEJB54McNaCw6sleMHV3l5P" target="_blank">AM Infinity Mouse</a>, which has a recent PixArt PAW3950 sensor and weighs just 49 g. And there's the as-yet unreleased <a href="https://www.pcgamer.com/hardware/gaming-mice/lucky-redditor-gets-hands-on-unreleased-steelseries-rival-pro-mini-revealing-another-uwb-wireless-gaming-mouse-will-soon-hit-the-market/" target="_blank">Steelseries Rival Pro Mini</a>, if the rumours are correct.</p><p>I know things like hot swappable batteries can seem like a bit of a gimmick, but I really don't think they are for a gaming mouse. Unless you're particularly bad at keeping on top of your mouse charge, it's unlikely that you'll run completely out of battery in your wireless mouse while gaming, but that's not really the point. </p><p>The point is you'll never have to take a break from wireless to plug it in if you forget to charge it, which can be important if you're playing competitive online games, for instance (which will surely be the target market for a Wallhack mouse). </p><p>It doesn't happen often, but there have definitely been times when I've noticed my battery is running low in the middle of a planned Counter-Strike session. I've had to take an unwanted break while it charges because I don't want to play with a cable now I'm used to wireless (woe is me, I know).</p><p>These removeable batteries are also more easily replaced than some, which is good for longevity.  </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2077332357468614684"><p lang="en" dir="ltr">二度、確かめる価値があるものもある - 2026.07.24 pic.twitter.com/3Wn32mH79e<a href="https://twitter.com/cantworkitout/status/2077332357468614684">July 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The wireless dongle/puck also looks great, judging from its silhouette and <a href="https://x.com/WALLHACK_JP/status/2077332357468614684?s=20" target="_blank">another teaser post</a>. I'm a big fan of the bigger pucks for mice, given they stop the little flimsy ones from falling all around. Often <em>off </em>the desk. And this one looks fancy, like a DAC, with a scroller for DPI and polling rate, along with a 'status' button and another element I'm nonplussed over.</p><p>If mel0nFPS's other predictions based on the PCB are correct, then we could be looking at a top-end PAW3955 sensor and optical clicks. The bottom also looks somewhat hollowed, though not in the usual way, so hopefully it'll be nice and lightweight. Given Wallhack's usual genuinely premium quality products for competitive gaming (I like its SP glass pads and <a href="https://www.pcgamer.com/hardware/gaming-mice/glass-mouse-pads-havent-won-me-over-but-gamer-sleeves-are-a-different-story/" target="_blank">gamer sleeve</a>) I'm certainly hopeful.</p><p>We'll have to wait until July 24 to find out more, including its price tag, which I'm not exactly holding my breath for. I'll be surprised if it's any cheaper than $140, given the brand and other high-end options on the market like the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Superstrike</a> and <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/hot-swappable-mouse-batteries-might-be-the-new-thing-as-it-looks-like-wallhacks-first-ever-mouse-will-have-one/</link>
                                                                            <description>
                            <![CDATA[ The company's first gaming mouse looks pretty lush. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xfXQFX27JYxCqSbcqcJcvD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/T6iSLXaDwdfacGLVCUSvG6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 20 Jul 2026 15:06:49 +0000</pubDate>                                                                                                                                <updated>Mon, 20 Jul 2026 16:55:14 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/T6iSLXaDwdfacGLVCUSvG6-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The corner of a Wallhack glass mouse pad.]]></media:description>                                                            <media:text><![CDATA[The corner of a Wallhack glass mouse pad.]]></media:text>
                                <media:title type="plain"><![CDATA[The corner of a Wallhack glass mouse pad.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/T6iSLXaDwdfacGLVCUSvG6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Wallhack (previously SkyPad, if you weren't aware) has <a href="https://x.com/WALLHACK_KR/status/2079159471150940581" target="_blank">teased a gaming mouse</a> that will be announced on July 24. This will be the company's first gaming mouse, having previously stuck to high-performance mouse pads, sleeves, and skates.</p><p>There must just be something irresistible about hot swappable batteries. This mouse looks to have them, as from the teaser trailer, we see a separate battery zooming into place. This also matches what peripheral reviewer <a href="https://x.com/mel0nFPS/status/2078116109950091508?s=20" target="_blank">mel0nFPS noted</a> about a <a href="https://x.com/WALLHACK_JP/status/2078072214503432522?s=20" target="_blank">previous image-only teaser</a>, as they predicted a "hot-swap battery system (250-300 mAh)."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2079219790590210364"><p lang="en" dir="ltr">Meet The M-001. More information on 2026.07.24 pic.twitter.com/lOdm8HAMxJ<a href="https://twitter.com/cantworkitout/status/2079219790590210364">July 20, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>I first saw a hot swappable mouse at Gamescom last year, when I was granted an early look at the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">Glorious Model O3</a>. Unfortunately that mouse failed to massively impress me for other reasons when I reviewed it (mostly mediocre tracking over wireless and stiff competition at such a high price), but I did like the battery system.</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>Since then, we've seen other companies are having a go at it. There's the <a href="https://store.angrymiao.com/products/am-infinity-mouse?srsltid=AfmBOoo5CyCXpCtfbAV-Zq6VKa4c8CeC_KEJB54McNaCw6sleMHV3l5P" target="_blank">AM Infinity Mouse</a>, which has a recent PixArt PAW3950 sensor and weighs just 49 g. And there's the as-yet unreleased <a href="https://www.pcgamer.com/hardware/gaming-mice/lucky-redditor-gets-hands-on-unreleased-steelseries-rival-pro-mini-revealing-another-uwb-wireless-gaming-mouse-will-soon-hit-the-market/" target="_blank">Steelseries Rival Pro Mini</a>, if the rumours are correct.</p><p>I know things like hot swappable batteries can seem like a bit of a gimmick, but I really don't think they are for a gaming mouse. Unless you're particularly bad at keeping on top of your mouse charge, it's unlikely that you'll run completely out of battery in your wireless mouse while gaming, but that's not really the point. </p><p>The point is you'll never have to take a break from wireless to plug it in if you forget to charge it, which can be important if you're playing competitive online games, for instance (which will surely be the target market for a Wallhack mouse). </p><p>It doesn't happen often, but there have definitely been times when I've noticed my battery is running low in the middle of a planned Counter-Strike session. I've had to take an unwanted break while it charges because I don't want to play with a cable now I'm used to wireless (woe is me, I know).</p><p>These removeable batteries are also more easily replaced than some, which is good for longevity.  </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2077332357468614684"><p lang="en" dir="ltr">二度、確かめる価値があるものもある - 2026.07.24 pic.twitter.com/3Wn32mH79e<a href="https://twitter.com/cantworkitout/status/2077332357468614684">July 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The wireless dongle/puck also looks great, judging from its silhouette and <a href="https://x.com/WALLHACK_JP/status/2077332357468614684?s=20" target="_blank">another teaser post</a>. I'm a big fan of the bigger pucks for mice, given they stop the little flimsy ones from falling all around. Often <em>off </em>the desk. And this one looks fancy, like a DAC, with a scroller for DPI and polling rate, along with a 'status' button and another element I'm nonplussed over.</p><p>If mel0nFPS's other predictions based on the PCB are correct, then we could be looking at a top-end PAW3955 sensor and optical clicks. The bottom also looks somewhat hollowed, though not in the usual way, so hopefully it'll be nice and lightweight. Given Wallhack's usual genuinely premium quality products for competitive gaming (I like its SP glass pads and <a href="https://www.pcgamer.com/hardware/gaming-mice/glass-mouse-pads-havent-won-me-over-but-gamer-sleeves-are-a-different-story/" target="_blank">gamer sleeve</a>) I'm certainly hopeful.</p><p>We'll have to wait until July 24 to find out more, including its price tag, which I'm not exactly holding my breath for. I'll be surprised if it's any cheaper than $140, given the brand and other high-end options on the market like the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Superstrike</a> and <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Glass mouse pads haven't won me over but gamer sleeves are a different story ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Jacob Fox, 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="VCVJqNEiEbweAQqQHu26DR" name="PCG Writers 2025 Yellow33" caption="" alt="PC Gamer headshots - Jacob Fox" src="https://cdn.mos.cms.futurecdn.net/VCVJqNEiEbweAQqQHu26DR-1920-80.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>Trying out a new mouse (a Superlight clone) and finally sacking off CS2's cheater-ridden Premier matchmaking for FaceIt.</p></div></div><p>I'm known around the PC Gamer streets as a bit of a mouse pad nerd. Though that's just because I take the surface my little rodent skates across seriously, as you should. If you're playing a game that requires good aim, a good pad can be just as important for your gameplay experience as high fps, up to a certain point.</p><p>Naturally, then, I fell under the spell of glass mouse pads for a while. With glass, there's the promise of a very slippery glide, if that's your thing, but more important is the promise of consistency and longevity. Cloth pads collect dust and dirt that can't just be wiped away, and the fibres change over time. That's why <a href="https://www.pcgamer.com/hardware/gaming-mice/some-pro-gamers-change-mouse-pads-every-few-months-and-that-makes-me-wonder-how-often-i-should-change-mine/" target="_blank">pros switch them out so often</a>.</p><p>Glass pads aren't like this, though. They do have irregularities etched into their surface to help with friction and sensor tracking, but these don't wear down because they're harder than your mouse skates. Your skates, on the other hand, do wear down quicker, but these are easily replaceable, and a cheap pack of dot skates can last a very long time.</p><p>Glass pads do require more maintenance, but not as much as I initially thought. When I first started using one—a <a href="https://www.pcgamer.com/hardware/gaming-mice/qpad-obsidian-glass-mouse-pad-review/" target="_blank">QPAD Obsidian</a>—I would wipe it down with a microfibre cloth between almost every two-minute Counter-Strike round, just in case something had gotten on it that could cause the skates to feel horribly scratchy when they ran over it. This does happen, but nowhere near as frequently as I initially thought. But eventually, when using a glass pad, I just wiped it down once or twice every 45-minute game, or if I noticed scratchiness.</p><p>There's one other bit of maintenance required, too. Unless you're in a cold climate and have dry skin all the time, you'll probably want to use a <a href="https://wallhack.com/en-uk/collections/gaming-sleeves" target="_blank">gamer sleeve</a> so your arm glides consistently over the pad while you aim, whatever the conditions.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kRFxcGa6FESmoy8D5MKLFD" name="IMG_2399" alt="A QPAD Obsidian Glass mouse pad." src="https://cdn.mos.cms.futurecdn.net/kRFxcGa6FESmoy8D5MKLFD-1920-80.jpg" mos="" align="middle" fullscreen="1" width="4032" height="2268" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/kRFxcGa6FESmoy8D5MKLFD-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I got used to this maintenance and started using a glass pad, and for a while I was hooked. There's just something about having very little static or dynamic friction and having an incredibly consistent glide that makes you feel like you're in the driver's seat. Every little movement is in your control, as is how smoothly you make those movements.</p><p>That seemed fantastic at first, but over time I've found I often don't <em>want </em>that much control. Somewhat paradoxically, I gain control over my aim by giving up some control of my mouse. That shouldn't really be a surprise, though, because 'control' pads are designed to be slower, i.e., providing more resistance to your movements, giving you less free control over your mouse movements. That's the opposite of a glide-y glass pad.</p><p>There's definitely a place for glass pads, but I just don't think I'm the target market. They're great if you don't need pinpoint aim and love a smooth glide, or if you need the kind of pinpoint aim that benefits from smooth, consistent tracking with a long time-to-kill (TTK). Games such as <a href="https://quake.bethesda.net/en" target="_blank">Quake Champions</a> or <a href="https://www.pcgamer.com/the-finals/" target="_blank">The Finals</a>, for instance. </p><p>However, in tactical shooters like <a href="https://www.pcgamer.com/counter-strike-2/" target="_blank">Counter-Strike 2</a> (my go-to game), I find I play much better when using a control cloth pad. I'm able to hold angles better and keep my gun very still, and I can make the small adjustments needed when peeking or occasionally flicking thanks to the increased stopping power and static friction.</p><p>I know that over time I could develop finer control over my aim with a glass pad, and maybe then I'd find them to be better. But I did try. I've put dozens of hours in on different glass pads, and I still feel a little relief when going back to a control pad like the <a href="https://www.razer.com/gaming-mouse-mats/razer-gigantus-v2-pro" target="_blank">Razer Gigantus V2 Pro</a> or <a href="https://zowie.benq.eu/en-uk/mouse-pad/h-sr-iii.html" target="_blank">Zowie HSR-III</a>, or even a smooth cloth pad like the <a href="https://steelseries.com/gaming-mousepads/qck-performance?mousepadSize=xl&model=Speed" target="_blank">SteelSeries QcK Performance Speed</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:3906px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pgXwgpiwQ7FMFo5Nu3BFAZ" name="IMG_3182 (1)" alt="A Wallhack SP-005 glass mouse pad on a desk with a mouse and earphones on top." src="https://cdn.mos.cms.futurecdn.net/pgXwgpiwQ7FMFo5Nu3BFAZ-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3906" height="2197" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/pgXwgpiwQ7FMFo5Nu3BFAZ-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">A Wallhack SP-005 glass mouse pad. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I've even tried a glass mouse pad that's designed to offer a bit more control: the <a href="https://wallhack.com/products/cr-005-black" target="_blank">Wallhack CR-005</a>. And this did feel better to begin with, to the extent that I wondered whether it could be my endgame pad. But that control feeling seemed to wear off a little over many hours of gameplay (perhaps, very speculatively, due to skate debris getting stuck between the micro surface bumps), and regardless I still felt on more solid ground, so to speak, when I whapped a cloth pad back on the desk.</p><p>I could have stuck it out with glass, but I ask myself: <em>why</em>? If pro players are able to reach their heights on cloth, then I see little incentive to switch to glass over the long-term, and there's little incentive to try and stick it out when I'm not getting the benefit in the short-term, either.</p><div><blockquote><p>Whenever I boot up Counter-Strike, I sleeve up too</p></blockquote></div><p>So, unless I ditch Counter-Strike and pick up Quake Champions once again (I'll be holding out for that fabled arena shooter genre comeback until the day I die), I'll be sticking with cloth, I think.</p><p>There is one thing that using glass pads has given me which I will continue to use, however: the gamer sleeve.</p><p>As I mentioned earlier, in most cases, using a sleeve with a glass pad is essential if you want to keep your arm moving across its surface consistently every time. But a couple of months ago, I heard someone say somewhere (I can't remember where) that a gamer sleeve can even be of benefit when using a cloth pad. So I tried it, and now I can't go back.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iWBPq7jMJPWfECGVkxSaEG" name="IMG_3183" alt="An arm holding a mouse, wearing a gamer sleeve." src="https://cdn.mos.cms.futurecdn.net/iWBPq7jMJPWfECGVkxSaEG-1920-80.jpg" mos="" align="middle" fullscreen="1" width="4032" height="2268" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/iWBPq7jMJPWfECGVkxSaEG-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Yes, whenever I boot up Counter-Strike, I sleeve up too. Even though I play on cloth. I felt a little sheepish the first few times, but I kept reminding myself that <a href="https://liquipedia.net/counterstrike/File:Torzsi_at_ESL_Pro_League_S17.jpg" target="_blank">some pro players use them</a> and that nobody is here watching me anyway. But now, it feels as natural as putting on my coat before I go outside in the winter. </p><p>And if I forget? It's just as noticeable as forgetting my coat. Without my gamer sleeve on, moving my arm around the mouse pad—aiming with low sensitivity, as you do in Counter-Strike—feels inconsistent at best, and downright slow at worst. But with my trusty half-palm-and-forearm sheath properly donned, my arm scoots around deftly, in exactly the same way every time I boot up the game, whatever the weather.</p><p>So thank you, glass pads, for opening my eyes to the wonders of the humble sleeve. You might not have won me over for playing my tactical shooters on your slippery surfaces, but you've given me that.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/glass-mouse-pads-havent-won-me-over-but-gamer-sleeves-are-a-different-story/</link>
                                                                            <description>
                            <![CDATA[ Mock me if you must. My gamer sleeve and I aren't listening. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">efVfAQG5FErz3JPS4aFznU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/k4kuxNkQYkPsQHjmVL5eq6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 18 Jul 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/k4kuxNkQYkPsQHjmVL5eq6-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jacob Fox wearing a gaming sleeve, not once but thrice.]]></media:description>                                                            <media:text><![CDATA[Jacob Fox wearing a gaming sleeve, not once but thrice.]]></media:text>
                                <media:title type="plain"><![CDATA[Jacob Fox wearing a gaming sleeve, not once but thrice.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/k4kuxNkQYkPsQHjmVL5eq6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Jacob Fox, 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="VCVJqNEiEbweAQqQHu26DR" name="PCG Writers 2025 Yellow33" caption="" alt="PC Gamer headshots - Jacob Fox" src="https://cdn.mos.cms.futurecdn.net/VCVJqNEiEbweAQqQHu26DR-1920-80.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>Trying out a new mouse (a Superlight clone) and finally sacking off CS2's cheater-ridden Premier matchmaking for FaceIt.</p></div></div><p>I'm known around the PC Gamer streets as a bit of a mouse pad nerd. Though that's just because I take the surface my little rodent skates across seriously, as you should. If you're playing a game that requires good aim, a good pad can be just as important for your gameplay experience as high fps, up to a certain point.</p><p>Naturally, then, I fell under the spell of glass mouse pads for a while. With glass, there's the promise of a very slippery glide, if that's your thing, but more important is the promise of consistency and longevity. Cloth pads collect dust and dirt that can't just be wiped away, and the fibres change over time. That's why <a href="https://www.pcgamer.com/hardware/gaming-mice/some-pro-gamers-change-mouse-pads-every-few-months-and-that-makes-me-wonder-how-often-i-should-change-mine/" target="_blank">pros switch them out so often</a>.</p><p>Glass pads aren't like this, though. They do have irregularities etched into their surface to help with friction and sensor tracking, but these don't wear down because they're harder than your mouse skates. Your skates, on the other hand, do wear down quicker, but these are easily replaceable, and a cheap pack of dot skates can last a very long time.</p><p>Glass pads do require more maintenance, but not as much as I initially thought. When I first started using one—a <a href="https://www.pcgamer.com/hardware/gaming-mice/qpad-obsidian-glass-mouse-pad-review/" target="_blank">QPAD Obsidian</a>—I would wipe it down with a microfibre cloth between almost every two-minute Counter-Strike round, just in case something had gotten on it that could cause the skates to feel horribly scratchy when they ran over it. This does happen, but nowhere near as frequently as I initially thought. But eventually, when using a glass pad, I just wiped it down once or twice every 45-minute game, or if I noticed scratchiness.</p><p>There's one other bit of maintenance required, too. Unless you're in a cold climate and have dry skin all the time, you'll probably want to use a <a href="https://wallhack.com/en-uk/collections/gaming-sleeves" target="_blank">gamer sleeve</a> so your arm glides consistently over the pad while you aim, whatever the conditions.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kRFxcGa6FESmoy8D5MKLFD" name="IMG_2399" alt="A QPAD Obsidian Glass mouse pad." src="https://cdn.mos.cms.futurecdn.net/kRFxcGa6FESmoy8D5MKLFD-1920-80.jpg" mos="" align="middle" fullscreen="1" width="4032" height="2268" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/kRFxcGa6FESmoy8D5MKLFD-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I got used to this maintenance and started using a glass pad, and for a while I was hooked. There's just something about having very little static or dynamic friction and having an incredibly consistent glide that makes you feel like you're in the driver's seat. Every little movement is in your control, as is how smoothly you make those movements.</p><p>That seemed fantastic at first, but over time I've found I often don't <em>want </em>that much control. Somewhat paradoxically, I gain control over my aim by giving up some control of my mouse. That shouldn't really be a surprise, though, because 'control' pads are designed to be slower, i.e., providing more resistance to your movements, giving you less free control over your mouse movements. That's the opposite of a glide-y glass pad.</p><p>There's definitely a place for glass pads, but I just don't think I'm the target market. They're great if you don't need pinpoint aim and love a smooth glide, or if you need the kind of pinpoint aim that benefits from smooth, consistent tracking with a long time-to-kill (TTK). Games such as <a href="https://quake.bethesda.net/en" target="_blank">Quake Champions</a> or <a href="https://www.pcgamer.com/the-finals/" target="_blank">The Finals</a>, for instance. </p><p>However, in tactical shooters like <a href="https://www.pcgamer.com/counter-strike-2/" target="_blank">Counter-Strike 2</a> (my go-to game), I find I play much better when using a control cloth pad. I'm able to hold angles better and keep my gun very still, and I can make the small adjustments needed when peeking or occasionally flicking thanks to the increased stopping power and static friction.</p><p>I know that over time I could develop finer control over my aim with a glass pad, and maybe then I'd find them to be better. But I did try. I've put dozens of hours in on different glass pads, and I still feel a little relief when going back to a control pad like the <a href="https://www.razer.com/gaming-mouse-mats/razer-gigantus-v2-pro" target="_blank">Razer Gigantus V2 Pro</a> or <a href="https://zowie.benq.eu/en-uk/mouse-pad/h-sr-iii.html" target="_blank">Zowie HSR-III</a>, or even a smooth cloth pad like the <a href="https://steelseries.com/gaming-mousepads/qck-performance?mousepadSize=xl&model=Speed" target="_blank">SteelSeries QcK Performance Speed</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:3906px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pgXwgpiwQ7FMFo5Nu3BFAZ" name="IMG_3182 (1)" alt="A Wallhack SP-005 glass mouse pad on a desk with a mouse and earphones on top." src="https://cdn.mos.cms.futurecdn.net/pgXwgpiwQ7FMFo5Nu3BFAZ-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3906" height="2197" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/pgXwgpiwQ7FMFo5Nu3BFAZ-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">A Wallhack SP-005 glass mouse pad. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I've even tried a glass mouse pad that's designed to offer a bit more control: the <a href="https://wallhack.com/products/cr-005-black" target="_blank">Wallhack CR-005</a>. And this did feel better to begin with, to the extent that I wondered whether it could be my endgame pad. But that control feeling seemed to wear off a little over many hours of gameplay (perhaps, very speculatively, due to skate debris getting stuck between the micro surface bumps), and regardless I still felt on more solid ground, so to speak, when I whapped a cloth pad back on the desk.</p><p>I could have stuck it out with glass, but I ask myself: <em>why</em>? If pro players are able to reach their heights on cloth, then I see little incentive to switch to glass over the long-term, and there's little incentive to try and stick it out when I'm not getting the benefit in the short-term, either.</p><div><blockquote><p>Whenever I boot up Counter-Strike, I sleeve up too</p></blockquote></div><p>So, unless I ditch Counter-Strike and pick up Quake Champions once again (I'll be holding out for that fabled arena shooter genre comeback until the day I die), I'll be sticking with cloth, I think.</p><p>There is one thing that using glass pads has given me which I will continue to use, however: the gamer sleeve.</p><p>As I mentioned earlier, in most cases, using a sleeve with a glass pad is essential if you want to keep your arm moving across its surface consistently every time. But a couple of months ago, I heard someone say somewhere (I can't remember where) that a gamer sleeve can even be of benefit when using a cloth pad. So I tried it, and now I can't go back.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iWBPq7jMJPWfECGVkxSaEG" name="IMG_3183" alt="An arm holding a mouse, wearing a gamer sleeve." src="https://cdn.mos.cms.futurecdn.net/iWBPq7jMJPWfECGVkxSaEG-1920-80.jpg" mos="" align="middle" fullscreen="1" width="4032" height="2268" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/iWBPq7jMJPWfECGVkxSaEG-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Yes, whenever I boot up Counter-Strike, I sleeve up too. Even though I play on cloth. I felt a little sheepish the first few times, but I kept reminding myself that <a href="https://liquipedia.net/counterstrike/File:Torzsi_at_ESL_Pro_League_S17.jpg" target="_blank">some pro players use them</a> and that nobody is here watching me anyway. But now, it feels as natural as putting on my coat before I go outside in the winter. </p><p>And if I forget? It's just as noticeable as forgetting my coat. Without my gamer sleeve on, moving my arm around the mouse pad—aiming with low sensitivity, as you do in Counter-Strike—feels inconsistent at best, and downright slow at worst. But with my trusty half-palm-and-forearm sheath properly donned, my arm scoots around deftly, in exactly the same way every time I boot up the game, whatever the weather.</p><p>So thank you, glass pads, for opening my eyes to the wonders of the humble sleeve. You might not have won me over for playing my tactical shooters on your slippery surfaces, but you've given me that.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ We might see a new Logitech Superstrike this September, just a few months after the world's first proper analogue mouse launched ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When it comes to gaming mice, big innovations don't come around that often. Earlier this year there was one, though, as Logitech was the first to put proper analogue clicks in a mouse using a mix of haptics and induction in the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a>. And now, rumour has it we'll be seeing a second version very soon.</p><p>That's according to someone <a href="https://x.com/jakeufps/status/2076754847177511276?s=20" target="_blank">the peripheral reviewer Jakeu calls</a> a "highly trusted leaker", who revealed it on the reviewer's Discord server. What will it be like? "No Hero 3. Upgrade main-controller. Further tweaks for HITS."</p><p>Apparently we'll be seeing the new Superstrike at Logitech G Play this September.</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>That's all the unnamed leaker gives us, which isn't a lot to go on. "No Hero 3" means no next-gen sensor, which is fine in my books because the Superstrike's Hero 2 sensor is just fine. Upgrades to the controller and HITS tweaks sound good too, but again, I find HITS on the Superstrike to be just fine as-is, personally.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2076754847177511276"><p lang="en" dir="ltr">GPX Superstrike 2 has just been leaked (yes, already)The announcement will be at Logitech G PLAY in SeptemberI'll be the first to call that they won't do a single thing to the rest of the mouse pic.twitter.com/co105Dt870<a href="https://twitter.com/cantworkitout/status/2076754847177511276">July 13, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>There's the slim possibility that Logitech is updating the mouse with what we've seen the likes of Keychron and even <a href="https://x.com/elastiXx94/status/2050210891690283378?s=20" target="_blank">lesser-known manufacturers</a> working on: hybrid traditional and analogue switches. Except I doubt Logitech will want to have a physical click in there when they worked so hard on the haptics system to replicate the feeling of a real click but have it trigger whenever the analogue click does—very successfully, I might add.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3127px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ETuLHorRiYbvuGhoM48CcS" name="logitech-g-pro-x2-superstrike-in-hand" alt="Logitech G Pro X2 Superstrike in a hand" src="https://cdn.mos.cms.futurecdn.net/ETuLHorRiYbvuGhoM48CcS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3127" height="1759" 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>More likely is that there could be a new shell for the Superstrike, fixing things like weighting, as the new internals make it quite front-heavy. There could also be improvements to things like the side buttons and so on. </p><p>It would make sense for Logi to release an iteration like this given the company essentially slapped the new internals in a Superlight 2 (with some weight reductions) to <a href="https://www.pcgamer.com/hardware/gaming-mice/we-knew-we-had-a-golden-nugget-in-our-hands-so-we-took-all-the-shortcuts-we-could-logitechs-new-wonder-mouse-looks-very-similar-to-the-superlight-2-for-good-reason/" target="_blank">get it to market as quickly as possible</a>.</p><p>Assuming the rumour is correct, it might be a shame for anyone that already bought a Superstrike. But then again, I doubt such people didn't know they were getting bleeding edge tech that could be superseded before long, even if that does end up being a little quicker than we expected.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/we-might-see-a-new-logitech-superstrike-this-september-just-a-few-months-after-the-worlds-first-proper-analogue-mouse-launched/</link>
                                                                            <description>
                            <![CDATA[ Apparently no new sensor, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UotApAf98qntyX9PUuAP4J</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/z6wAeHCH6TPQAdrXEuVNtT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 14 Jul 2026 10:04:54 +0000</pubDate>                                                                                                                                <updated>Tue, 14 Jul 2026 11:22:48 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/z6wAeHCH6TPQAdrXEuVNtT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech G Pro X2 Superstrike gaming mouse]]></media:description>                                                            <media:text><![CDATA[A Logitech G Pro X2 Superstrike gaming mouse]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech G Pro X2 Superstrike gaming mouse]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/z6wAeHCH6TPQAdrXEuVNtT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When it comes to gaming mice, big innovations don't come around that often. Earlier this year there was one, though, as Logitech was the first to put proper analogue clicks in a mouse using a mix of haptics and induction in the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">G Pro X2 Superstrike</a>. And now, rumour has it we'll be seeing a second version very soon.</p><p>That's according to someone <a href="https://x.com/jakeufps/status/2076754847177511276?s=20" target="_blank">the peripheral reviewer Jakeu calls</a> a "highly trusted leaker", who revealed it on the reviewer's Discord server. What will it be like? "No Hero 3. Upgrade main-controller. Further tweaks for HITS."</p><p>Apparently we'll be seeing the new Superstrike at Logitech G Play this September.</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>That's all the unnamed leaker gives us, which isn't a lot to go on. "No Hero 3" means no next-gen sensor, which is fine in my books because the Superstrike's Hero 2 sensor is just fine. Upgrades to the controller and HITS tweaks sound good too, but again, I find HITS on the Superstrike to be just fine as-is, personally.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2076754847177511276"><p lang="en" dir="ltr">GPX Superstrike 2 has just been leaked (yes, already)The announcement will be at Logitech G PLAY in SeptemberI'll be the first to call that they won't do a single thing to the rest of the mouse pic.twitter.com/co105Dt870<a href="https://twitter.com/cantworkitout/status/2076754847177511276">July 13, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>There's the slim possibility that Logitech is updating the mouse with what we've seen the likes of Keychron and even <a href="https://x.com/elastiXx94/status/2050210891690283378?s=20" target="_blank">lesser-known manufacturers</a> working on: hybrid traditional and analogue switches. Except I doubt Logitech will want to have a physical click in there when they worked so hard on the haptics system to replicate the feeling of a real click but have it trigger whenever the analogue click does—very successfully, I might add.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3127px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ETuLHorRiYbvuGhoM48CcS" name="logitech-g-pro-x2-superstrike-in-hand" alt="Logitech G Pro X2 Superstrike in a hand" src="https://cdn.mos.cms.futurecdn.net/ETuLHorRiYbvuGhoM48CcS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3127" height="1759" 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>More likely is that there could be a new shell for the Superstrike, fixing things like weighting, as the new internals make it quite front-heavy. There could also be improvements to things like the side buttons and so on. </p><p>It would make sense for Logi to release an iteration like this given the company essentially slapped the new internals in a Superlight 2 (with some weight reductions) to <a href="https://www.pcgamer.com/hardware/gaming-mice/we-knew-we-had-a-golden-nugget-in-our-hands-so-we-took-all-the-shortcuts-we-could-logitechs-new-wonder-mouse-looks-very-similar-to-the-superlight-2-for-good-reason/" target="_blank">get it to market as quickly as possible</a>.</p><p>Assuming the rumour is correct, it might be a shame for anyone that already bought a Superstrike. But then again, I doubt such people didn't know they were getting bleeding edge tech that could be superseded before long, even if that does end up being a little quicker than we expected.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus ProArt Mouse MD301 ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Asus ProArt MD301" data-widget-title=""></div><p>The <a href="https://www.asus.com/us/proart/" target="_blank">Asus ProArt</a> lineup is, in essence, the company's range of fancy PC products for creative professionals—and my goodness does it contain some nice-looking <em>stuff. </em>Which is why I jumped at the chance to test out one of the latest additions, the Asus ProArt Mouse MD301.<br><br>It's certainly a handsome squeaker, designed to provide a subtle, refined, ergonomic option for those who have some serious work to do. It's all business, this mouse, and there's something desirable about a design that eschews gamer-like frippery and instead aims for a more executive flair.<br><br>It's also customisable, in the sense that you can remove its main button switches for something more serene, or more clicky. There's also a horizontal scroll wheel, à la the Logitech MX Master range, which feels beautifully dampened. Really, most of the controls here are of the premium, well-thought-out sort, and that's very pleasing to see.<br><br>However, this <a href="https://www.asus.com/us/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">$100</a>/<a href="https://www.asus.com/uk/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">£105</a> professional rodent has the odd quirk that gives me pause. The side buttons are a touch flimsy. The thumb rest is slightly small and a little awkward. I've also had the odd connection issue, and the software feels like an afterthought.</p><p>There's a lot to like about the MD301. But as a long-term tester of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mx-master-4-review/" target="_blank">Logitech MX Master 4</a>, I can't help but feel that if you're going down the professional ergo mouse route, it's the better buy of the two. The ProArt MD301 is a lighter, leaner attempt at an ergonomic mouse with many admirable qualities, but it drops the ball a little too often to give it my full seal of approval.</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 smaller, lighter MX Master alternative: </strong>The Logitech MX Master 4 is an ergonomic, professional-focused mouse with plenty of features, but it's very heavy. The ProArt MD310 is much lighter on its feet.<br><br><strong>✅ You're an admirer of subtle design: </strong>The ProArt MD301 is a refined piece of engineering and wouldn't look out of place on a CEO's desk.</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're after ultimate comfort: </strong>Despite being an ergo mouse, the MD301 isn't exactly plush. It's far from uncomfortable, but the thumbrest in particular feels a little meagre for all-day-long professional use. <br><br><strong>❌ You want top performance: </strong>The sensor is… fine. Perfectly usable. That being said, this is a $100 mouse with fairly low-spec internals, and you can get much more performance for less.</p></div></div></div></div><h2 class="article-body__section" id="section-asus-proart-mouse-md301-features"><span>Asus ProArt Mouse MD301 features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CBZGgSMsUxR4VxRHbLj4Nb" name="Asusproart2" alt="An Asus ProArt Mouse MD301 on white gravel, next to a green leaf" src="https://cdn.mos.cms.futurecdn.net/CBZGgSMsUxR4VxRHbLj4Nb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Asus ProArt MD301</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Ergonomic mouse</p></td></tr><tr><td class="firstcol " ><p><strong>Max polling rate</strong></p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>8,000</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>800 mAh</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>99.7 g</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz via included dongle, Bluetooth</p></td></tr><tr><td class="firstcol " ><p><strong>Buttons and controls</strong></p></td><td  ><p>Six programmable buttons, two scroll wheels</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.asus.com/us/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">$100</a>/<a href="https://www.asus.com/uk/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">£105</a></p></td></tr></tbody></table></div><p>The Asus ProArt Mouse MD301 is an ergonomically-shaped mouse that feels a lot smaller than your average ergo squeaker, coming in at 114.8 mm long, 75.2 mm wide, and 46.8 mm tall. Sit it next to a Logitech MX Master 4, and it looks positively tiny. It's also cheaper, coming in at $100 compared to the Logitech's $120 MSRP.</p><p>It's got six programmable buttons, including all the usual suspects. A left and right click, a middle scroll wheel click, two side buttons, and a hidden DPI button underneath a ridged plastic surface integrated into the chassis behind the wheel. It looks, in many ways, like a default mouse—albeit with some subtle ergo touches </p><p>Oh, and it's also got a horizontal scroll wheel mounted to the left-hand side. Logitech really changed the game with the old MX Master 3S design, didn't it?</p><p>Another interesting feature to note is the switches underneath the left and right buttons. By default, the ProArt MD301 comes with two (deep breath in) TTC E169-60BB0G0 (80M) units, but these push-fit socketed models can be pulled out and replaced with supported TTC, Omron, and Kaith units, which <a href="https://www.asus.com/event/2026/Mouse/accessories/ASUS-Push-Fit-Socket-Compatibility-list.pdf" target="_blank">Asus has handily listed here</a>.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/neDn3uvm5sfBforJbEBSuF-1920-80.jpg" alt="An Asus ProArt Mouse MD301 on white gravel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MmrEMpJreVyFXJzXXpVQ7i-1920-80.jpg" alt="A close-up shot of the Asus ProArt Mouse MD310's scroll wheel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/muLzdeyJyLvhoMzAzo9dbn-1920-80.jpg" alt="A close-up shot of the Asus ProArt Mouse MD310's horizontal scroll wheel and side buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V5jSR5RygEAuMiJz6Qq328-1920-80.jpg" alt="The underside of the Asus ProArt Mouse MD310" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The scroll wheel has a party trick, too, in the form of Asus' SmartShift tech. This allows for precise, clicky control when spun slowly, and a free-wheeling action when you spin it at an appropriate speed. It's a lot like Logitech's magnetic solution on paper, but feels quite different.</p><p>Spin the wheel at high speeds, and you can still feel it notch underneath your fingertip, albeit very quickly. Whereas Logitech's infinite scroll feature frees the wheel up with a glass-like, smooth action, the MD301 has a tendency to keep some tactile feedback in play, which makes it easy to stop at a defined point with precision.</p><p>Asus says the MD301 has up to 180-day battery life, and can gain eight hours' worth of charge in a single minute over its USB Type-C connection. Speaking of which, it also comes with a braided Type-C to Type-A cable, and a small USB Type-A dongle for wireless connection. Bluetooth connection is also supported.</p><p>Sensor-wise, this Asus squeaker makes do with an 8,000 DPI optical unit, which, in combination with its 1,000 Hz maximum polling rate, is unlikely to set gamers' hearts a-fluttering. Still, the MX Master 4 does just fine with a similar sensor (and a much lower polling rate), so it's not unsurprising for a work-first mouse. It's also a fair bit lighter than Logitech's latest ergo effort, tipping the scales at 99.7 g compared to the MX Master 4's 150 g bulk.</p><h2 class="article-body__section" id="section-asus-proart-mouse-md301-ergonomics"><span>Asus ProArt Mouse MD301 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yGoVm9y5Z6rH5AuNtgBdKF" name="20260706_145613" alt="An Asus ProArt Mouse MD301 next to a Logitech MX Master 4" src="https://cdn.mos.cms.futurecdn.net/yGoVm9y5Z6rH5AuNtgBdKF-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The first thing I noticed about the MD301 is its diminutive proportions, especially when sat next to the MX Master 4. It's a lot narrower, with a much smaller thumb rest. However, it's got a wider top "hump", which feels good underneath my palm. </p><p>Switching between the two, it's clear that the Asus is designed to rotate your hand over to the right side more drastically than most, although at nowhere near as extreme an angle as something like the <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-m5-review/" target="_blank">Keychron M5</a>. It doesn't feel aggressively ergo, though. More like a slightly chonkier gaming mouse with some interesting quirks.</p><p>Clicking and spinning my way around the controls, I've been continually impressed by the effort that's gone into the switchgear and material choices. The left and right switches have a very positive click action, and well-weighted buttons. </p><div><blockquote><p>If anything, I could stand for it to be slightly heavier, in return for better side buttons and a bit of extra room for my thumb.</p></blockquote></div><p>The scrollwheel feels notchy yet free-flowing in all the right ways, with its clicky, fast-speed scroll being something of a highlight. The same goes for the horizontal wheel, which is heavily dampened and weighty underneath my thumb. Nice.</p><p>I'm also a big fan of the smooth outer coating, which has a silky quality that feels rather pleasant underneath my fingertips. It's slightly fingerprint-prone, but no worse than any other black gaming mouse I test these days.</p><p>The DPI switch is hidden underneath a ridged plastic insert that runs down the middle of the design, and provides a small moment of delight when you realise it's exactly where you expect it to be, but tastefully obscured. This is a classy mouse. A device for grown-ups. A refined rodent, if you will.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8wSAvTgnPYnqanjcbTFFV" name="20260706_145123" alt="The hidden DPI button on top of the Asus ProArt Mouse MD301" src="https://cdn.mos.cms.futurecdn.net/8wSAvTgnPYnqanjcbTFFV-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The only real ergonomic drawbacks come in two forms. One, the left-side thumbrest is quite small, and dips inwards. Using the MX Master 4 on the daily, my thumb has become accustomed to lolling on its own throne-like protrusion of silicone—whereas here it needs to tuck itself into a diminutive (and firm) plastic seat. My digit has become lazy, it seems, and has a tendency to want to fall off.</p><p>And two, the side buttons don't feel as high-quality as the rest of the unit. They're perfectly functional, but sitting as they do beneath a gorgeously weighted horizontal scrollwheel, the contrast is immediately obvious. They're simply "fine," while the rest of the controls are pretty excellent.</p><p>Overall, though, the ProArt MD301 is an impressive-feeling device, especially given its relatively low weight compared to its chassis size and ergo design. If anything, I could stand for it to be slightly heavier, in return for better side buttons and a bit of extra room for my thumb.</p><h2 class="article-body__section" id="section-asus-proart-mouse-md301-performance"><span>Asus ProArt Mouse MD301 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="NPDqzkftfpyCTKtwXmJDuN" name="AsusProArt3" alt="An Asus ProArt MD301 mouse shot from above, sitting horizontally in the frame on top of white gravel" src="https://cdn.mos.cms.futurecdn.net/NPDqzkftfpyCTKtwXmJDuN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Given this is an ergo mouse with a relatively modest sensor, it would be unfair to expect <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>-like performance or tracking ability from the MD301. Lo and behold, it's not the sharpest-performing rodent on the block. </p><p>Still, the sensor tracks well enough for work and light gaming usage, as shown by the MouseTester charts below.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ts9E2kjX4wPyFSpg2h5fLJ-1920-80.png" alt="A MouseTester chart showing count vs time data for the Asus ProArt Mouse MD301" /><figcaption>Tested at 1,000 Hz—The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mT6yeSxg3SZ6qmwWpvWaMJ-1920-80.png" alt="A MouseTester chart showing velocity vs time data for the Asus ProArt Mouse MD301" /><figcaption>Tested at 1,000 Hz—The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/86dQqCMoNsvQdsDZAopgKJ-1920-80.png" alt="A MouseTester chart showing interval vs time data for the Asus ProArt Mouse MD301" /><figcaption>Tested at 1,000 Hz—Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure></figure><p>I have, however, experienced the odd connection drop out. This has manifested as a very occasional half-second pause, and has happened several times during my week-long testing. I've got a lot of 2.4 GHz wireless devices plugged into my machine, and several more around my front room, so it's possible that the dongle here is slightly interference-prone—although I haven't been able to pin down the exact cause.</p><p>I have two other gaming mice plugged into this PC at all times (the MX Master 4 and the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-cobra-hyperspeed-review/" target="_blank">Razer Cobra Hyperspeed</a>), and neither have had any connection issues. I tried unplugging both mice to see if it fixed the problem, and managed a few days of solid connection—before again experiencing a very quick pause.</p><p>I also had one connection pause while using the mouse with a gaming laptop I'm currently testing, so it doesn't seem to be specific to my main machine. The problem is so intermittent as to be barely noticeable, but there's something in this room the MD301's 2.4 GHz dongle doesn't appear to like.</p><h2 class="article-body__section" id="section-asus-proart-mouse-md301-aesthetics"><span>Asus ProArt Mouse MD301 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="7WaobTHEQrpUndynxjzP6X" name="AsusProArt4" alt="An Asus ProArt MD301 looking pretty at a 3/4 angle, on top of white gravel" src="https://cdn.mos.cms.futurecdn.net/7WaobTHEQrpUndynxjzP6X-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I love the ProArt MD301's aesthetic design. It's somehow utilitarian, slightly luxury, handsome, and hardly noticeable all at the same time. The ridged plastic vertical insert framing the scrollwheel is about as simple as design touches come, and yet adds a certain something that both feels good underneath your fingertips, and looks ever-so-slightly special on your desk.</p><p>Do I miss RGB lighting, or a touch of gamer flair? Not a bit of it. This mouse is all business, and that by itself makes it stand out.</p><h2 class="article-body__section" id="section-asus-proart-md301-software"><span>Asus ProArt MD301 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="28XiuG4L64imXenRytAzV7" name="Asusgearlink" alt="A screenshot of the Asus Gear Link web app when linked with the Asus ProArt Mouse MD301" src="https://cdn.mos.cms.futurecdn.net/28XiuG4L64imXenRytAzV7-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/28XiuG4L64imXenRytAzV7-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>The ProArt MD301 connects to <a href="https://gearlink.asus.com/en" target="_blank">Asus Gear Link</a>, a web-based app that allows you to adjust the DPI, polling rate, and button response settings within a browser. In order to tweak macros and use some of the features, though, you also need to install a companion app as an extension, which somehow feels like the worst of both worlds.</p><p>Pick either a web app, or installed app, Asus. Having one in order to properly use the other feels like an extra level of annoyance.</p><p>The web app itself has the odd quirk, too. I regularly split my 32-inch, 4K screen into two side-by-side browser windows, but the Asus app complains that it doesn't have enough room in one panel, suggesting I "switch to a larger screen." What do you want, a 49-inch ultrawide?</p><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="KvBrd2NAcfSSraayY6FDJL" name="Asusgearlink2" alt="A message from Asus Gear Link, complaining that it doesn't have enough browser window space for "the best experience"" src="https://cdn.mos.cms.futurecdn.net/KvBrd2NAcfSSraayY6FDJL-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/KvBrd2NAcfSSraayY6FDJL-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>There's an option to use it anyway, though that's a new one on me. It seems to scale the interface just fine if you override it, but it's a bit indicative of the software experience overall. Unfinished is the feeling I come away with.</p><p>Still, early annoyances aside, the web interface works well enough. It's a bit barebones, though, and given the premium-feel of the mouse itself, it strikes as a clunky afterthought tacked on to what is otherwise a well-put-together package.</p><h2 class="article-body__section" id="section-asus-proart-md301-value"><span>Asus ProArt MD301 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="64jx7NK22Wngv2LuQFV7KW" name="20260706_145538" alt="An Asus ProArt Mouse MD301 sitting nose-to-nose with a Logitech MX Master 4" src="https://cdn.mos.cms.futurecdn.net/64jx7NK22Wngv2LuQFV7KW-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At its $100 MSRP, I'd say the Asus ProArt Mouse MD301 is well-priced for its bracket. It's a chunk cheaper than the Logitech MX Master 4, and looks and feels like a premium mouse for more reasonable money.</p><p>That being said, I can't help but feel you're getting a lot more for your cash with Logitech's offering. It's got a more comfortable thumb rest, near-silent switches as standard, and a set of controls that can match (and occasionally beat) the Asus in terms of feel. And, it must be said, the Logitech software experience is a lot more refined. Plus, I've not experienced any connection pauses with the Master in many months of everyday usage.</p><p>Which puts the ProArt squeaker in an odd spot. It's a lot lighter than the Master 4, which makes it more suitable as a gaming mouse. But it's still got an ergo-spec sensor, so I doubt many will be buying it for its gaming performance chops. </p><p>And while it's a good-looking object that would suit the *loudly coughs* <em>executive-ergo-mouse-using-professional</em>, I can't help but feel there are enough hang-ups here to cause them to sniff into their yuzu-infused lattes.</p><p>It's a good effort from Asus, and a mouse with many likeable qualities. However, the quirks slightly outweigh the advantages, and as a result, I struggle to recommend it over the competition.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/asus-proart-mouse-md301/</link>
                                                                            <description>
                            <![CDATA[ A professional design, but with enough quirks to give me pause. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">74wWM4f8JebSDZj7RERSUU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CDsLPYCyTeZscFLF2sjGHQ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 08 Jul 2026 16:12:04 +0000</pubDate>                                                                                                                                <updated>Wed, 08 Jul 2026 16:12:10 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/CDsLPYCyTeZscFLF2sjGHQ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Asus ProArt Mouse MD310 on white gravel]]></media:description>                                                            <media:text><![CDATA[An Asus ProArt Mouse MD310 on white gravel]]></media:text>
                                <media:title type="plain"><![CDATA[An Asus ProArt Mouse MD310 on white gravel]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CDsLPYCyTeZscFLF2sjGHQ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Asus ProArt MD301" data-widget-title=""></div><p>The <a href="https://www.asus.com/us/proart/" target="_blank">Asus ProArt</a> lineup is, in essence, the company's range of fancy PC products for creative professionals—and my goodness does it contain some nice-looking <em>stuff. </em>Which is why I jumped at the chance to test out one of the latest additions, the Asus ProArt Mouse MD301.<br><br>It's certainly a handsome squeaker, designed to provide a subtle, refined, ergonomic option for those who have some serious work to do. It's all business, this mouse, and there's something desirable about a design that eschews gamer-like frippery and instead aims for a more executive flair.<br><br>It's also customisable, in the sense that you can remove its main button switches for something more serene, or more clicky. There's also a horizontal scroll wheel, à la the Logitech MX Master range, which feels beautifully dampened. Really, most of the controls here are of the premium, well-thought-out sort, and that's very pleasing to see.<br><br>However, this <a href="https://www.asus.com/us/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">$100</a>/<a href="https://www.asus.com/uk/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">£105</a> professional rodent has the odd quirk that gives me pause. The side buttons are a touch flimsy. The thumb rest is slightly small and a little awkward. I've also had the odd connection issue, and the software feels like an afterthought.</p><p>There's a lot to like about the MD301. But as a long-term tester of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mx-master-4-review/" target="_blank">Logitech MX Master 4</a>, I can't help but feel that if you're going down the professional ergo mouse route, it's the better buy of the two. The ProArt MD301 is a lighter, leaner attempt at an ergonomic mouse with many admirable qualities, but it drops the ball a little too often to give it my full seal of approval.</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 smaller, lighter MX Master alternative: </strong>The Logitech MX Master 4 is an ergonomic, professional-focused mouse with plenty of features, but it's very heavy. The ProArt MD310 is much lighter on its feet.<br><br><strong>✅ You're an admirer of subtle design: </strong>The ProArt MD301 is a refined piece of engineering and wouldn't look out of place on a CEO's desk.</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're after ultimate comfort: </strong>Despite being an ergo mouse, the MD301 isn't exactly plush. It's far from uncomfortable, but the thumbrest in particular feels a little meagre for all-day-long professional use. <br><br><strong>❌ You want top performance: </strong>The sensor is… fine. Perfectly usable. That being said, this is a $100 mouse with fairly low-spec internals, and you can get much more performance for less.</p></div></div></div></div><h2 class="article-body__section" id="section-asus-proart-mouse-md301-features"><span>Asus ProArt Mouse MD301 features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CBZGgSMsUxR4VxRHbLj4Nb" name="Asusproart2" alt="An Asus ProArt Mouse MD301 on white gravel, next to a green leaf" src="https://cdn.mos.cms.futurecdn.net/CBZGgSMsUxR4VxRHbLj4Nb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Asus ProArt MD301</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Ergonomic mouse</p></td></tr><tr><td class="firstcol " ><p><strong>Max polling rate</strong></p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>8,000</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>800 mAh</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>99.7 g</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz via included dongle, Bluetooth</p></td></tr><tr><td class="firstcol " ><p><strong>Buttons and controls</strong></p></td><td  ><p>Six programmable buttons, two scroll wheels</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.asus.com/us/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">$100</a>/<a href="https://www.asus.com/uk/accessories/mice-and-mouse-pads/proart/proart-mouse-md301/" target="_blank">£105</a></p></td></tr></tbody></table></div><p>The Asus ProArt Mouse MD301 is an ergonomically-shaped mouse that feels a lot smaller than your average ergo squeaker, coming in at 114.8 mm long, 75.2 mm wide, and 46.8 mm tall. Sit it next to a Logitech MX Master 4, and it looks positively tiny. It's also cheaper, coming in at $100 compared to the Logitech's $120 MSRP.</p><p>It's got six programmable buttons, including all the usual suspects. A left and right click, a middle scroll wheel click, two side buttons, and a hidden DPI button underneath a ridged plastic surface integrated into the chassis behind the wheel. It looks, in many ways, like a default mouse—albeit with some subtle ergo touches </p><p>Oh, and it's also got a horizontal scroll wheel mounted to the left-hand side. Logitech really changed the game with the old MX Master 3S design, didn't it?</p><p>Another interesting feature to note is the switches underneath the left and right buttons. By default, the ProArt MD301 comes with two (deep breath in) TTC E169-60BB0G0 (80M) units, but these push-fit socketed models can be pulled out and replaced with supported TTC, Omron, and Kaith units, which <a href="https://www.asus.com/event/2026/Mouse/accessories/ASUS-Push-Fit-Socket-Compatibility-list.pdf" target="_blank">Asus has handily listed here</a>.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/neDn3uvm5sfBforJbEBSuF-1920-80.jpg" alt="An Asus ProArt Mouse MD301 on white gravel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MmrEMpJreVyFXJzXXpVQ7i-1920-80.jpg" alt="A close-up shot of the Asus ProArt Mouse MD310's scroll wheel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/muLzdeyJyLvhoMzAzo9dbn-1920-80.jpg" alt="A close-up shot of the Asus ProArt Mouse MD310's horizontal scroll wheel and side buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V5jSR5RygEAuMiJz6Qq328-1920-80.jpg" alt="The underside of the Asus ProArt Mouse MD310" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The scroll wheel has a party trick, too, in the form of Asus' SmartShift tech. This allows for precise, clicky control when spun slowly, and a free-wheeling action when you spin it at an appropriate speed. It's a lot like Logitech's magnetic solution on paper, but feels quite different.</p><p>Spin the wheel at high speeds, and you can still feel it notch underneath your fingertip, albeit very quickly. Whereas Logitech's infinite scroll feature frees the wheel up with a glass-like, smooth action, the MD301 has a tendency to keep some tactile feedback in play, which makes it easy to stop at a defined point with precision.</p><p>Asus says the MD301 has up to 180-day battery life, and can gain eight hours' worth of charge in a single minute over its USB Type-C connection. Speaking of which, it also comes with a braided Type-C to Type-A cable, and a small USB Type-A dongle for wireless connection. Bluetooth connection is also supported.</p><p>Sensor-wise, this Asus squeaker makes do with an 8,000 DPI optical unit, which, in combination with its 1,000 Hz maximum polling rate, is unlikely to set gamers' hearts a-fluttering. Still, the MX Master 4 does just fine with a similar sensor (and a much lower polling rate), so it's not unsurprising for a work-first mouse. It's also a fair bit lighter than Logitech's latest ergo effort, tipping the scales at 99.7 g compared to the MX Master 4's 150 g bulk.</p><h2 class="article-body__section" id="section-asus-proart-mouse-md301-ergonomics"><span>Asus ProArt Mouse MD301 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yGoVm9y5Z6rH5AuNtgBdKF" name="20260706_145613" alt="An Asus ProArt Mouse MD301 next to a Logitech MX Master 4" src="https://cdn.mos.cms.futurecdn.net/yGoVm9y5Z6rH5AuNtgBdKF-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The first thing I noticed about the MD301 is its diminutive proportions, especially when sat next to the MX Master 4. It's a lot narrower, with a much smaller thumb rest. However, it's got a wider top "hump", which feels good underneath my palm. </p><p>Switching between the two, it's clear that the Asus is designed to rotate your hand over to the right side more drastically than most, although at nowhere near as extreme an angle as something like the <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-m5-review/" target="_blank">Keychron M5</a>. It doesn't feel aggressively ergo, though. More like a slightly chonkier gaming mouse with some interesting quirks.</p><p>Clicking and spinning my way around the controls, I've been continually impressed by the effort that's gone into the switchgear and material choices. The left and right switches have a very positive click action, and well-weighted buttons. </p><div><blockquote><p>If anything, I could stand for it to be slightly heavier, in return for better side buttons and a bit of extra room for my thumb.</p></blockquote></div><p>The scrollwheel feels notchy yet free-flowing in all the right ways, with its clicky, fast-speed scroll being something of a highlight. The same goes for the horizontal wheel, which is heavily dampened and weighty underneath my thumb. Nice.</p><p>I'm also a big fan of the smooth outer coating, which has a silky quality that feels rather pleasant underneath my fingertips. It's slightly fingerprint-prone, but no worse than any other black gaming mouse I test these days.</p><p>The DPI switch is hidden underneath a ridged plastic insert that runs down the middle of the design, and provides a small moment of delight when you realise it's exactly where you expect it to be, but tastefully obscured. This is a classy mouse. A device for grown-ups. A refined rodent, if you will.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8wSAvTgnPYnqanjcbTFFV" name="20260706_145123" alt="The hidden DPI button on top of the Asus ProArt Mouse MD301" src="https://cdn.mos.cms.futurecdn.net/8wSAvTgnPYnqanjcbTFFV-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The only real ergonomic drawbacks come in two forms. One, the left-side thumbrest is quite small, and dips inwards. Using the MX Master 4 on the daily, my thumb has become accustomed to lolling on its own throne-like protrusion of silicone—whereas here it needs to tuck itself into a diminutive (and firm) plastic seat. My digit has become lazy, it seems, and has a tendency to want to fall off.</p><p>And two, the side buttons don't feel as high-quality as the rest of the unit. They're perfectly functional, but sitting as they do beneath a gorgeously weighted horizontal scrollwheel, the contrast is immediately obvious. They're simply "fine," while the rest of the controls are pretty excellent.</p><p>Overall, though, the ProArt MD301 is an impressive-feeling device, especially given its relatively low weight compared to its chassis size and ergo design. If anything, I could stand for it to be slightly heavier, in return for better side buttons and a bit of extra room for my thumb.</p><h2 class="article-body__section" id="section-asus-proart-mouse-md301-performance"><span>Asus ProArt Mouse MD301 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="NPDqzkftfpyCTKtwXmJDuN" name="AsusProArt3" alt="An Asus ProArt MD301 mouse shot from above, sitting horizontally in the frame on top of white gravel" src="https://cdn.mos.cms.futurecdn.net/NPDqzkftfpyCTKtwXmJDuN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Given this is an ergo mouse with a relatively modest sensor, it would be unfair to expect <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>-like performance or tracking ability from the MD301. Lo and behold, it's not the sharpest-performing rodent on the block. </p><p>Still, the sensor tracks well enough for work and light gaming usage, as shown by the MouseTester charts below.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ts9E2kjX4wPyFSpg2h5fLJ-1920-80.png" alt="A MouseTester chart showing count vs time data for the Asus ProArt Mouse MD301" /><figcaption>Tested at 1,000 Hz—The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mT6yeSxg3SZ6qmwWpvWaMJ-1920-80.png" alt="A MouseTester chart showing velocity vs time data for the Asus ProArt Mouse MD301" /><figcaption>Tested at 1,000 Hz—The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/86dQqCMoNsvQdsDZAopgKJ-1920-80.png" alt="A MouseTester chart showing interval vs time data for the Asus ProArt Mouse MD301" /><figcaption>Tested at 1,000 Hz—Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure></figure><p>I have, however, experienced the odd connection drop out. This has manifested as a very occasional half-second pause, and has happened several times during my week-long testing. I've got a lot of 2.4 GHz wireless devices plugged into my machine, and several more around my front room, so it's possible that the dongle here is slightly interference-prone—although I haven't been able to pin down the exact cause.</p><p>I have two other gaming mice plugged into this PC at all times (the MX Master 4 and the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-cobra-hyperspeed-review/" target="_blank">Razer Cobra Hyperspeed</a>), and neither have had any connection issues. I tried unplugging both mice to see if it fixed the problem, and managed a few days of solid connection—before again experiencing a very quick pause.</p><p>I also had one connection pause while using the mouse with a gaming laptop I'm currently testing, so it doesn't seem to be specific to my main machine. The problem is so intermittent as to be barely noticeable, but there's something in this room the MD301's 2.4 GHz dongle doesn't appear to like.</p><h2 class="article-body__section" id="section-asus-proart-mouse-md301-aesthetics"><span>Asus ProArt Mouse MD301 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="7WaobTHEQrpUndynxjzP6X" name="AsusProArt4" alt="An Asus ProArt MD301 looking pretty at a 3/4 angle, on top of white gravel" src="https://cdn.mos.cms.futurecdn.net/7WaobTHEQrpUndynxjzP6X-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I love the ProArt MD301's aesthetic design. It's somehow utilitarian, slightly luxury, handsome, and hardly noticeable all at the same time. The ridged plastic vertical insert framing the scrollwheel is about as simple as design touches come, and yet adds a certain something that both feels good underneath your fingertips, and looks ever-so-slightly special on your desk.</p><p>Do I miss RGB lighting, or a touch of gamer flair? Not a bit of it. This mouse is all business, and that by itself makes it stand out.</p><h2 class="article-body__section" id="section-asus-proart-md301-software"><span>Asus ProArt MD301 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="28XiuG4L64imXenRytAzV7" name="Asusgearlink" alt="A screenshot of the Asus Gear Link web app when linked with the Asus ProArt Mouse MD301" src="https://cdn.mos.cms.futurecdn.net/28XiuG4L64imXenRytAzV7-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/28XiuG4L64imXenRytAzV7-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>The ProArt MD301 connects to <a href="https://gearlink.asus.com/en" target="_blank">Asus Gear Link</a>, a web-based app that allows you to adjust the DPI, polling rate, and button response settings within a browser. In order to tweak macros and use some of the features, though, you also need to install a companion app as an extension, which somehow feels like the worst of both worlds.</p><p>Pick either a web app, or installed app, Asus. Having one in order to properly use the other feels like an extra level of annoyance.</p><p>The web app itself has the odd quirk, too. I regularly split my 32-inch, 4K screen into two side-by-side browser windows, but the Asus app complains that it doesn't have enough room in one panel, suggesting I "switch to a larger screen." What do you want, a 49-inch ultrawide?</p><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="KvBrd2NAcfSSraayY6FDJL" name="Asusgearlink2" alt="A message from Asus Gear Link, complaining that it doesn't have enough browser window space for "the best experience"" src="https://cdn.mos.cms.futurecdn.net/KvBrd2NAcfSSraayY6FDJL-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/KvBrd2NAcfSSraayY6FDJL-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>There's an option to use it anyway, though that's a new one on me. It seems to scale the interface just fine if you override it, but it's a bit indicative of the software experience overall. Unfinished is the feeling I come away with.</p><p>Still, early annoyances aside, the web interface works well enough. It's a bit barebones, though, and given the premium-feel of the mouse itself, it strikes as a clunky afterthought tacked on to what is otherwise a well-put-together package.</p><h2 class="article-body__section" id="section-asus-proart-md301-value"><span>Asus ProArt MD301 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="64jx7NK22Wngv2LuQFV7KW" name="20260706_145538" alt="An Asus ProArt Mouse MD301 sitting nose-to-nose with a Logitech MX Master 4" src="https://cdn.mos.cms.futurecdn.net/64jx7NK22Wngv2LuQFV7KW-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At its $100 MSRP, I'd say the Asus ProArt Mouse MD301 is well-priced for its bracket. It's a chunk cheaper than the Logitech MX Master 4, and looks and feels like a premium mouse for more reasonable money.</p><p>That being said, I can't help but feel you're getting a lot more for your cash with Logitech's offering. It's got a more comfortable thumb rest, near-silent switches as standard, and a set of controls that can match (and occasionally beat) the Asus in terms of feel. And, it must be said, the Logitech software experience is a lot more refined. Plus, I've not experienced any connection pauses with the Master in many months of everyday usage.</p><p>Which puts the ProArt squeaker in an odd spot. It's a lot lighter than the Master 4, which makes it more suitable as a gaming mouse. But it's still got an ergo-spec sensor, so I doubt many will be buying it for its gaming performance chops. </p><p>And while it's a good-looking object that would suit the *loudly coughs* <em>executive-ergo-mouse-using-professional</em>, I can't help but feel there are enough hang-ups here to cause them to sniff into their yuzu-infused lattes.</p><p>It's a good effort from Asus, and a mouse with many likeable qualities. However, the quirks slightly outweigh the advantages, and as a result, I struggle to recommend it over the competition.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Logitech Mobi Fold mouse review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Logitech Mobi Fold"></div><p>The humble mouse has been through some changes in its time. When it’s not adding extra buttons all over the place it’s twisting your wrist into unlikely positions or looking like whatever the <a href="https://www.pcgamer.com/mad-catz-rat-pro-x-review/" target="_blank">Mad Catz RAT</a> was. A general theme over the years, however, is that they’re getting bigger, and perhaps there's a study to be done into whether PC gamers’ hands are getting larger too, the better to cradle and envelop them.</p><p>Logitech has taken the opposite approach with the Mobi—it’s truly tiny. This is a travel mouse, a mouse for the truly short of space, a sliver of silicone-wrapped plastic that folds in half when not in use, looking rather like the Surface Arc mouse Microsoft put out in 2017, but a little bit cheaper. Where that device folded flat for transport, this one goes the other way.</p><p>Hand the Mobi to someone and the conversation goes like this: “It’s a phone?” No. “It’s a phone stand?” No. “What is it then? I can’t believe I don’t know.” Click click click on the buttons. “Oh, it’s a mouse!”</p><div ><table><caption>Mobi Fold specs</caption><tbody><tr><td class="firstcol " ><p><strong>Sensor resolution</strong></p></td><td  ><p>4000 DPI</p></td></tr><tr><td class="firstcol " ><p><strong>Tracking</strong></p></td><td  ><p>optical</p></td></tr><tr><td class="firstcol " ><p><strong>Buttons</strong></p></td><td  ><p>4 (two programmable), plus touch panel</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>100mAh Li-Po</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Bluetooth LE, Logi Bolt</p></td></tr><tr><td class="firstcol " ><p><strong>Multi-device pairing</strong></p></td><td  ><p>three devices</p></td></tr><tr><td class="firstcol " ><p><strong>Colours</strong></p></td><td  ><p>Graphite, lilac, off-white</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (folded)</strong></p></td><td  ><p>21 x 57 x 66 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (unfolded)</strong></p></td><td  ><p>33 x 57 x 122 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>79 g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.logitech.com/en-gb/shop/p/mobi-fold-mouse" target="_blank">£69.99</a> / <a href="https://www.logitech.com/en-us/shop/p/mobi-fold-mouse.910-007830" target="_blank">$79.99</a></p></td></tr></tbody></table></div><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You’re taking your gaming laptop on the road:</strong> The extra precision a mouse offers over a trackpad, as well as the two programmable buttons, make the Mobi Fold a useful thing to have with you.</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>There's room in your bag for a full-sized mouse:</strong> With a body that can be hard to grip and some jerky scrolling, there are lighter and better options out there for the gamer on the go.</p></div></div><p>While it may resemble a Star Trek communicator or a tiny flip phone to go with your geek pie hairstyle (“that’s well weapon”), the Mobi is in fact just a mouse. It has two main buttons, two further programmable buttons, a little touch-sensitive panel to act as a scroll wheel, a PAW3222 4,000 DPI optical sensor, and a USB-C port for charging. It connects to your PC (and two other devices) via Bluetooth with fast pairing, and will play nicely with a Bolt receiver if you ask it to, though one isn’t included in the package unless you buy a special ‘business’ version.</p><p>The folding nature of the mouse is actually a stroke of genius. When collapsed, it will slip neatly into your skin-tight futuristic space-catsuit without causing too much of a bulge. And when stretched out it fits in the hand, something many compact mice that just take a normal-sized one and shrink it can’t claim. Your third finger and thumb will go underneath the 120-degree (ish) central hump if you let them, and there's certainly space for them to do this, but most of the time there's just enough height in the body of the mouse for your thumb to rest on. </p><p>Unless you have insanely long fingers you won’t run out of space on top, and the third and fourth buttons are cleverly integrated under the scrollpad, with a press at the top or bottom activating them. These click much more loudly than the nicely damped main buttons, and you can use the Logi Options+ software for a degree of customisation about what they do, including a neat double-tap auto-zoom.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/7C4L85XHkx5kXsXXgw2zY7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uyah46WQEEuC6zWJ7aLyQ7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iU8iGHLhenG2AqbrHDHfK7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div><blockquote><p>That’s where we are in the space year 2026, requiring an AI to tell us whether we’re wearing pants or not.</p></blockquote></div><p>And while it may look a little flimsy, Logitech has some remarkable claims about how it’s not. It can, apparently, withstand 50,000 folding actions before it starts to wear out, which Logi thinks should take 15 years (or about 5,479 days, for an average of nine folds a day). Obviously that doesn’t take into account people constantly folding and unfolding it because of the novelty of the hinge mechanism, but in 15 years we’ll be controlling our PCs with brain implants anyway. Instead of a simple switch in the hinge to detect when it’s closed and switch it off, Logitech says there's an on-device AI that protects against unintentional clicks while you’re folding it. If that sounds absurd, it’s because it is, but that’s where we are in the space year 2026, requiring an AI to tell us whether we’re wearing pants or not.</p><p>Better is the battery life of 30 days from a full charge, and the ability to use it for 22 hours after a charge of just one minute. You won’t be able to use it while it’s charging thanks to the position of the USB-C port, which isn’t quite up to Apple Magic Mouse levels of egregiousness, but with a cable connected it feels enough like you’re about to snap the plug of in the socket to make you reconsider after a few seconds. The battery cover can be pried up with a screwdriver, and it looks like the cell could be replaced, though Logitech hasn’t mentioned anything about this. </p><p>Of course it’s possible to play games with it. You can game with a trackpad or the tiny red nub on a Thinkpad, and I’ve played Age of Empires II with much worse things than the Mobi. It doesn’t require any kind of special surface to glide over, seems quite happy on a trouser leg, and the pointer is reliable and accurate. The important thing here is how much better it is to use than a laptop’s trackpad, especially if you’ve not put in the hours required to get good at using one for gaming.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/qvRKydkzBeEjmuhW8Z6NH7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bjjmd7SDvKNMdajCcfeCZ7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JSXxhPWPGV9XEB8smayJR7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2NfzKe2tcwjfBb78HwGHB7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iU8iGHLhenG2AqbrHDHfK7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T4Wy2zCGKZZ8Bkyw9uiSZ7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div><blockquote><p>Its four buttons are fine, but scrolling is a mess.</p></blockquote></div><p>Sadly, that’s almost all the praise it’s possible to muster about the Mobi. Its four buttons are fine, but scrolling is a mess. Not only is the touchpad the same texture as its surroundings, so it’s quite possible to be lovingly rubbing your fingertip against one of the buttons instead of where the action is in the middle, but even if you do get it in the right place, the web page or camera zoom you’re controlling moves jerkily, as if it’s losing track of your fingertip. </p><p>A hand that’s used to a solid-bodied mouse can rebel against being asked to cradle something so slender, and you end up moving from what should be a straightforward palm caress to a crab-like grip on the edges. It’s possible to pick the back edge up, fold your fingers underneath, and keep only the sensor in contact with the tabletop, and this might be the best way to use it despite every promotional image showing it with front and back firmly on the ground.</p><p>So, yeah. The Logi Mobi Fold is a nice piece of engineering but inevitably can’t hold a candle to a proper gaming mouse. Perhaps that’s not the point, as we don’t expect products designed for extreme portability to perform precisely like their full-size counterparts. At 79 g it’s heavier than the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-gaming-mouse-review/">Logitech G Pro X Superlight</a> and the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/">Corsair Sabre V2 Pro</a>, so if you’ve got it tucked in your bag and fancy a bit of Total War it’s better than a trackpad, but a modern full-sized mouse is hardly a large piece of equipment to transport, so use that instead.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/logitech-mobi-fold-review/</link>
                                                                            <description>
                            <![CDATA[ Is that a mouse in your pocket or do you need to see a doctor? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">K53srydpKdGNFuLaqCTAra</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FgQTQfXDfPekUFgZ9dwEZ7-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 07 Jul 2026 11:41:33 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Ian Evenden ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/EYGqWVK4EWD3rdf5vxJG4c-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Ian Evenden has been doing this for far too long and should know better. The first issue of PC Gamer he read was probably issue 15, though it&#039;s a bit hazy, and there&#039;s nothing he doesn&#039;t know about tweaking interrupt requests for running Syndicate. He&#039;s worked for PC Format, Maximum PC, Edge, Creative Bloq, Gamesmaster, and anyone who&#039;ll have him. In his spare time he grows vegetables of prodigious size.&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/FgQTQfXDfPekUFgZ9dwEZ7-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logitech Mobi Fold travel mouse]]></media:description>                                                            <media:text><![CDATA[Logitech Mobi Fold travel mouse]]></media:text>
                                <media:title type="plain"><![CDATA[Logitech Mobi Fold travel mouse]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FgQTQfXDfPekUFgZ9dwEZ7-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Logitech Mobi Fold"></div><p>The humble mouse has been through some changes in its time. When it’s not adding extra buttons all over the place it’s twisting your wrist into unlikely positions or looking like whatever the <a href="https://www.pcgamer.com/mad-catz-rat-pro-x-review/" target="_blank">Mad Catz RAT</a> was. A general theme over the years, however, is that they’re getting bigger, and perhaps there's a study to be done into whether PC gamers’ hands are getting larger too, the better to cradle and envelop them.</p><p>Logitech has taken the opposite approach with the Mobi—it’s truly tiny. This is a travel mouse, a mouse for the truly short of space, a sliver of silicone-wrapped plastic that folds in half when not in use, looking rather like the Surface Arc mouse Microsoft put out in 2017, but a little bit cheaper. Where that device folded flat for transport, this one goes the other way.</p><p>Hand the Mobi to someone and the conversation goes like this: “It’s a phone?” No. “It’s a phone stand?” No. “What is it then? I can’t believe I don’t know.” Click click click on the buttons. “Oh, it’s a mouse!”</p><div ><table><caption>Mobi Fold specs</caption><tbody><tr><td class="firstcol " ><p><strong>Sensor resolution</strong></p></td><td  ><p>4000 DPI</p></td></tr><tr><td class="firstcol " ><p><strong>Tracking</strong></p></td><td  ><p>optical</p></td></tr><tr><td class="firstcol " ><p><strong>Buttons</strong></p></td><td  ><p>4 (two programmable), plus touch panel</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>100mAh Li-Po</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Bluetooth LE, Logi Bolt</p></td></tr><tr><td class="firstcol " ><p><strong>Multi-device pairing</strong></p></td><td  ><p>three devices</p></td></tr><tr><td class="firstcol " ><p><strong>Colours</strong></p></td><td  ><p>Graphite, lilac, off-white</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (folded)</strong></p></td><td  ><p>21 x 57 x 66 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (unfolded)</strong></p></td><td  ><p>33 x 57 x 122 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>79 g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.logitech.com/en-gb/shop/p/mobi-fold-mouse" target="_blank">£69.99</a> / <a href="https://www.logitech.com/en-us/shop/p/mobi-fold-mouse.910-007830" target="_blank">$79.99</a></p></td></tr></tbody></table></div><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You’re taking your gaming laptop on the road:</strong> The extra precision a mouse offers over a trackpad, as well as the two programmable buttons, make the Mobi Fold a useful thing to have with you.</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>There's room in your bag for a full-sized mouse:</strong> With a body that can be hard to grip and some jerky scrolling, there are lighter and better options out there for the gamer on the go.</p></div></div><p>While it may resemble a Star Trek communicator or a tiny flip phone to go with your geek pie hairstyle (“that’s well weapon”), the Mobi is in fact just a mouse. It has two main buttons, two further programmable buttons, a little touch-sensitive panel to act as a scroll wheel, a PAW3222 4,000 DPI optical sensor, and a USB-C port for charging. It connects to your PC (and two other devices) via Bluetooth with fast pairing, and will play nicely with a Bolt receiver if you ask it to, though one isn’t included in the package unless you buy a special ‘business’ version.</p><p>The folding nature of the mouse is actually a stroke of genius. When collapsed, it will slip neatly into your skin-tight futuristic space-catsuit without causing too much of a bulge. And when stretched out it fits in the hand, something many compact mice that just take a normal-sized one and shrink it can’t claim. Your third finger and thumb will go underneath the 120-degree (ish) central hump if you let them, and there's certainly space for them to do this, but most of the time there's just enough height in the body of the mouse for your thumb to rest on. </p><p>Unless you have insanely long fingers you won’t run out of space on top, and the third and fourth buttons are cleverly integrated under the scrollpad, with a press at the top or bottom activating them. These click much more loudly than the nicely damped main buttons, and you can use the Logi Options+ software for a degree of customisation about what they do, including a neat double-tap auto-zoom.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/7C4L85XHkx5kXsXXgw2zY7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uyah46WQEEuC6zWJ7aLyQ7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iU8iGHLhenG2AqbrHDHfK7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div><blockquote><p>That’s where we are in the space year 2026, requiring an AI to tell us whether we’re wearing pants or not.</p></blockquote></div><p>And while it may look a little flimsy, Logitech has some remarkable claims about how it’s not. It can, apparently, withstand 50,000 folding actions before it starts to wear out, which Logi thinks should take 15 years (or about 5,479 days, for an average of nine folds a day). Obviously that doesn’t take into account people constantly folding and unfolding it because of the novelty of the hinge mechanism, but in 15 years we’ll be controlling our PCs with brain implants anyway. Instead of a simple switch in the hinge to detect when it’s closed and switch it off, Logitech says there's an on-device AI that protects against unintentional clicks while you’re folding it. If that sounds absurd, it’s because it is, but that’s where we are in the space year 2026, requiring an AI to tell us whether we’re wearing pants or not.</p><p>Better is the battery life of 30 days from a full charge, and the ability to use it for 22 hours after a charge of just one minute. You won’t be able to use it while it’s charging thanks to the position of the USB-C port, which isn’t quite up to Apple Magic Mouse levels of egregiousness, but with a cable connected it feels enough like you’re about to snap the plug of in the socket to make you reconsider after a few seconds. The battery cover can be pried up with a screwdriver, and it looks like the cell could be replaced, though Logitech hasn’t mentioned anything about this. </p><p>Of course it’s possible to play games with it. You can game with a trackpad or the tiny red nub on a Thinkpad, and I’ve played Age of Empires II with much worse things than the Mobi. It doesn’t require any kind of special surface to glide over, seems quite happy on a trouser leg, and the pointer is reliable and accurate. The important thing here is how much better it is to use than a laptop’s trackpad, especially if you’ve not put in the hours required to get good at using one for gaming.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/qvRKydkzBeEjmuhW8Z6NH7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bjjmd7SDvKNMdajCcfeCZ7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JSXxhPWPGV9XEB8smayJR7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2NfzKe2tcwjfBb78HwGHB7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iU8iGHLhenG2AqbrHDHfK7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T4Wy2zCGKZZ8Bkyw9uiSZ7-1920-80.jpg" alt="Logitech Mobi Fold travel mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div><blockquote><p>Its four buttons are fine, but scrolling is a mess.</p></blockquote></div><p>Sadly, that’s almost all the praise it’s possible to muster about the Mobi. Its four buttons are fine, but scrolling is a mess. Not only is the touchpad the same texture as its surroundings, so it’s quite possible to be lovingly rubbing your fingertip against one of the buttons instead of where the action is in the middle, but even if you do get it in the right place, the web page or camera zoom you’re controlling moves jerkily, as if it’s losing track of your fingertip. </p><p>A hand that’s used to a solid-bodied mouse can rebel against being asked to cradle something so slender, and you end up moving from what should be a straightforward palm caress to a crab-like grip on the edges. It’s possible to pick the back edge up, fold your fingers underneath, and keep only the sensor in contact with the tabletop, and this might be the best way to use it despite every promotional image showing it with front and back firmly on the ground.</p><p>So, yeah. The Logi Mobi Fold is a nice piece of engineering but inevitably can’t hold a candle to a proper gaming mouse. Perhaps that’s not the point, as we don’t expect products designed for extreme portability to perform precisely like their full-size counterparts. At 79 g it’s heavier than the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-gaming-mouse-review/">Logitech G Pro X Superlight</a> and the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/">Corsair Sabre V2 Pro</a>, so if you’ve got it tucked in your bag and fancy a bit of Total War it’s better than a trackpad, but a modern full-sized mouse is hardly a large piece of equipment to transport, so use that instead.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Logitech G305 X Superlight review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Logitech G305 X Superlight" data-widget-title=""></div><p>For years, Logitech's egg-shaped G305 has been a budget beast, offering a comfortable feel, decent sensor, and solid shape at a reasonable price. It was so good, in fact, that it was our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank">best budget wireless gaming mouse</a> until the copycat <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2 Pro</a> showed up. Incredibly, it claimed a spot on top of the budget gaming mouse hill for eight entire years. </p><p>Almost as if it were perturbed for losing that spot, Logitech has just launched a refresh, the G305 X Superlight, with an upgraded sensor and ever so slightly different look. Now it's got RGB that shines through a translucent patch in the base, to match the look of the G316 X 98 gaming keyboard. </p><p>But, in return for those upgrades, you are paying more money now, so it doesn't just need to be better to actually <em>be better</em>. It instead needs to be better for the money. Okay, I'll stop saying "be better". </p><p>That's all before mentioning that, like almost every bit of PC gaming gear, the competition has gotten fierce over the years. Logitech doesn't just need to compete with itself; it has to throw hands with a dozen other mouse brands to come out victorious. </p><div  class="fancy-box"><div class="fancy_box-title">Logitech G305 X Superlight 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="SmvDaB7ZJtgJrTg96UaMxb" name="IMG_9671" caption="" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" src="https://cdn.mos.cms.futurecdn.net/SmvDaB7ZJtgJrTg96UaMxb-1920-80.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>Sensor: </strong>Hero 44K<br><strong>Connectivity:</strong> Wired (USB Type-C), wireless (2.4 GHz and Bluetooth)<br><strong>Switches:</strong> Not stated<br><strong>Polling rate: </strong>1,000 Hz (up to 8,000 Hz with optional dongle)<br><strong>DPI: </strong>44,000<br><strong>Acceleration:</strong> 40 G<br><strong>Speed: </strong>678 IPS<br><strong>RGB: </strong>Yes<br><strong>Weight:</strong> 59 g<br><strong>Battery life:</strong> 130 Hours<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-us/shop/p/g305-x-superlight" target="_blank">$80</a> | <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-gb/shop/p/g305-x-superlight.910-007740" target="_blank">£70</a></p></div></div><p>At 59 grams, the G305 X Superlight has a pleasant feel to it. It's not very weighty at all, but there's certainly enough that it gives some resistance as I use it. The skates give resistance, too, and I'm not a fan of them. They catch just a little, sticking more to my mouse pad than I'd like. It definitely feels like more of a subjective thing, but I would like a light mouse to glide more in use, especially in snappy first-person shooters. </p><p>As well as this, I can hear a defined scratching sound with the mouse skates (we had the same problem with the <a href="https://www.pcgamer.com/hardware/gaming-mice/protoarc-em25-ergonomic-mouse-review/" target="_blank">Protoarc EM25</a> recently), which doesn't appear to do damage but can be quite annoying. Once I really started to take note of it, the mouse actively annoyed me, which is a bad sign for long-term use.</p><p>I even found myself cautious of making wide motions because it was loud enough to distract. You should be able to fix this by replacing the skates with after-market ones, but that's something you really don't want to have to do with a mouse just to get it feeling okay, especially a budget one.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QCcZTaj4LJJRB7nCff6ozb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FPbxz8rpYoW7Jv3E77BPyb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TE9nJLs5K9mu3vpyTusRvb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/c7syVD4Jjm4eppjEfd5qnb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gRqQhKY9yRNXDqXq4pDQvb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One thing that I do appreciate about this mouse is its tiny visible screws on the bottom. You can get in there and replace the battery, should you want to, and easy access is a good thing, as far as repairability is concerned. </p><p>Speaking of internals, Logitech's Hero sensor is still potent. You are getting a max DPI of 44,000 here, and it's snappy and responsive enough to handle high DPIs well. It also technically supports 8,000 Hz polling, but you have to buy an optional receiver to actually use that. If doing this means getting a cheaper mouse, I actually think making 8,000 optional is a fairly smart play. It's a niche polling rate that most won't see the benefit of. </p><p>In shooter <a href="https://www.pcgamer.com/games/fps/mouse-pi-for-hire-review/" target="_blank">Mouse: PI for Hire</a>, I had no problems blasting away all the baddies, and the easy-to-access DPI switch on the top of the mouse means I can flit between sensitivities with ease. The switches are satisfying to click and produce a rather loud noise in response. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yRzgELQC4sQppkwaBMSXzb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse with its receiver, on top of stone" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pTZdszAGGB42CfodWGhPqb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/myk9CBfoUgL4To9qL728ob-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I almost never found myself double-clicking, though I think part of that is the comfortable shape. It's a sturdy shell (get it? Because of the egg thing), and though it's plastic, it's certainly strong plastic. The round base means that I am often encouraged to squeeze the sides with the bottom of my palm. It's a comforting hold that feels very natural in play. I'd say it's better suited to small hands, thanks to its tiny frame, but I didn't particularly mind it with my fairly big hands, either. </p><p>At just under 60 grams, it's relatively light, though again, those skates just let it down somewhat. On a heavier frame, I can see the appeal of more catchy skates, but I really want the G305 X Superlight to feel breezy in use. </p><div><blockquote><p>I didn't realise until I'd swapped mice how much the skates impacted my enjoyment of the G305 X. </p></blockquote></div><p>One thing I always try to test with gaming mice is Counter-Strike 2, as its short time to kill makes precise, quick aiming so important. For the most part, the G305 X performs admirably here. The sensor never cut out, and shots are easy to make. </p><p>The G305 X's specs are almost approaching competitive esports level, and that's certainly nice to have at this price point, though there will always be some compromises. For instance, moving from it to my daily driver, the <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a>, it has a better sensor but worse polling, and the R8's skates gave me instant relief when I swapped. And the R8 does all of this, with an included charging dock and great aesthetics, for $30 less. I didn't realise until I'd swapped mice how much the skates impacted my enjoyment of the G305 X. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3bnUJYtUdDFKLoCUK5d8vb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Pb6U2qqarrEwRcpfCcnvwb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G305 X is impressive in more than one way, though. Its 35-hour battery life is certainly quite strong. It's also the type of mouse you can just throw in a bag and bring places. I know, as I've done that. It's sturdy, light, small and comes with a small compartment on the bottom for the 2.4 GHz connector. This means it's a very neat little package. </p><p>And that package is partly so neat because of its subdued aesthetic. I've had my hands on the black one, and outside of the RGB strip at the top, it's all very understated. It looks clean on a desk and doesn't distract much from the screen. Its rounded base is not only comfortable but looks neat too.</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 simply want the G305 but better: </strong>This is a very similar mouse, with slightly different RGB, an upgraded sensor, and a battery for wired charging</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong> You want a budget egg-shaped mouse. </strong>The Mchose G3 V2 offers a very similar shape and smoother skates for half the price tag.</p></div></div><p>But Logitech aren't even the only one doing that egg shape anymore. I recently had the chance to test out the rather impressive <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a>, which comes in at less than half the price, and honestly, I'd be picking that instead if it were my cash. The 12,000 DPI in the G3 V2 is lower, but you get the same base polling, a stronger battery life, the exact same weight, and its Omron mechanical switches are very pleasant too. </p><p>That's before mentioning the G3 V2 Pro, which is around ten dollars more than the standard G3V2, comes with an upgraded sensor, and packs a 26,000 max DPI. Mchose's mouse feet are also substantially better, to me.</p><p>The G305 X Superlight does seem like a noticeable improvement over the standard G305 on paper, and in practice, it's a solid mid-range device with strong stats, a solid feel, and a clean look. However, the G305 has partly stood the test of time because you'd always find it on sale, and thanks to a price bump, the G305 X doesn't actually feel like a no-brainer upgrade, especially when the market is more vibrant, varied, and interesting than ever before. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/logitech-g305-x-superlight-review/</link>
                                                                            <description>
                            <![CDATA[ A solid and fairly plain upgrade on the original, but not wholly better either. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CpybdgtNoaxnCfqj8qUD36</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pTZdszAGGB42CfodWGhPqb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 19 Jun 2026 15:37:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/pTZdszAGGB42CfodWGhPqb-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logitech G305 X Superlight gaming mouse, held in a hand outside]]></media:description>                                                            <media:text><![CDATA[Logitech G305 X Superlight gaming mouse, held in a hand outside]]></media:text>
                                <media:title type="plain"><![CDATA[Logitech G305 X Superlight gaming mouse, held in a hand outside]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pTZdszAGGB42CfodWGhPqb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Logitech G305 X Superlight" data-widget-title=""></div><p>For years, Logitech's egg-shaped G305 has been a budget beast, offering a comfortable feel, decent sensor, and solid shape at a reasonable price. It was so good, in fact, that it was our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank">best budget wireless gaming mouse</a> until the copycat <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2 Pro</a> showed up. Incredibly, it claimed a spot on top of the budget gaming mouse hill for eight entire years. </p><p>Almost as if it were perturbed for losing that spot, Logitech has just launched a refresh, the G305 X Superlight, with an upgraded sensor and ever so slightly different look. Now it's got RGB that shines through a translucent patch in the base, to match the look of the G316 X 98 gaming keyboard. </p><p>But, in return for those upgrades, you are paying more money now, so it doesn't just need to be better to actually <em>be better</em>. It instead needs to be better for the money. Okay, I'll stop saying "be better". </p><p>That's all before mentioning that, like almost every bit of PC gaming gear, the competition has gotten fierce over the years. Logitech doesn't just need to compete with itself; it has to throw hands with a dozen other mouse brands to come out victorious. </p><div  class="fancy-box"><div class="fancy_box-title">Logitech G305 X Superlight 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="SmvDaB7ZJtgJrTg96UaMxb" name="IMG_9671" caption="" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" src="https://cdn.mos.cms.futurecdn.net/SmvDaB7ZJtgJrTg96UaMxb-1920-80.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>Sensor: </strong>Hero 44K<br><strong>Connectivity:</strong> Wired (USB Type-C), wireless (2.4 GHz and Bluetooth)<br><strong>Switches:</strong> Not stated<br><strong>Polling rate: </strong>1,000 Hz (up to 8,000 Hz with optional dongle)<br><strong>DPI: </strong>44,000<br><strong>Acceleration:</strong> 40 G<br><strong>Speed: </strong>678 IPS<br><strong>RGB: </strong>Yes<br><strong>Weight:</strong> 59 g<br><strong>Battery life:</strong> 130 Hours<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-us/shop/p/g305-x-superlight" target="_blank">$80</a> | <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-gb/shop/p/g305-x-superlight.910-007740" target="_blank">£70</a></p></div></div><p>At 59 grams, the G305 X Superlight has a pleasant feel to it. It's not very weighty at all, but there's certainly enough that it gives some resistance as I use it. The skates give resistance, too, and I'm not a fan of them. They catch just a little, sticking more to my mouse pad than I'd like. It definitely feels like more of a subjective thing, but I would like a light mouse to glide more in use, especially in snappy first-person shooters. </p><p>As well as this, I can hear a defined scratching sound with the mouse skates (we had the same problem with the <a href="https://www.pcgamer.com/hardware/gaming-mice/protoarc-em25-ergonomic-mouse-review/" target="_blank">Protoarc EM25</a> recently), which doesn't appear to do damage but can be quite annoying. Once I really started to take note of it, the mouse actively annoyed me, which is a bad sign for long-term use.</p><p>I even found myself cautious of making wide motions because it was loud enough to distract. You should be able to fix this by replacing the skates with after-market ones, but that's something you really don't want to have to do with a mouse just to get it feeling okay, especially a budget one.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QCcZTaj4LJJRB7nCff6ozb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FPbxz8rpYoW7Jv3E77BPyb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TE9nJLs5K9mu3vpyTusRvb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/c7syVD4Jjm4eppjEfd5qnb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gRqQhKY9yRNXDqXq4pDQvb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One thing that I do appreciate about this mouse is its tiny visible screws on the bottom. You can get in there and replace the battery, should you want to, and easy access is a good thing, as far as repairability is concerned. </p><p>Speaking of internals, Logitech's Hero sensor is still potent. You are getting a max DPI of 44,000 here, and it's snappy and responsive enough to handle high DPIs well. It also technically supports 8,000 Hz polling, but you have to buy an optional receiver to actually use that. If doing this means getting a cheaper mouse, I actually think making 8,000 optional is a fairly smart play. It's a niche polling rate that most won't see the benefit of. </p><p>In shooter <a href="https://www.pcgamer.com/games/fps/mouse-pi-for-hire-review/" target="_blank">Mouse: PI for Hire</a>, I had no problems blasting away all the baddies, and the easy-to-access DPI switch on the top of the mouse means I can flit between sensitivities with ease. The switches are satisfying to click and produce a rather loud noise in response. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yRzgELQC4sQppkwaBMSXzb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse with its receiver, on top of stone" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pTZdszAGGB42CfodWGhPqb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/myk9CBfoUgL4To9qL728ob-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I almost never found myself double-clicking, though I think part of that is the comfortable shape. It's a sturdy shell (get it? Because of the egg thing), and though it's plastic, it's certainly strong plastic. The round base means that I am often encouraged to squeeze the sides with the bottom of my palm. It's a comforting hold that feels very natural in play. I'd say it's better suited to small hands, thanks to its tiny frame, but I didn't particularly mind it with my fairly big hands, either. </p><p>At just under 60 grams, it's relatively light, though again, those skates just let it down somewhat. On a heavier frame, I can see the appeal of more catchy skates, but I really want the G305 X Superlight to feel breezy in use. </p><div><blockquote><p>I didn't realise until I'd swapped mice how much the skates impacted my enjoyment of the G305 X. </p></blockquote></div><p>One thing I always try to test with gaming mice is Counter-Strike 2, as its short time to kill makes precise, quick aiming so important. For the most part, the G305 X performs admirably here. The sensor never cut out, and shots are easy to make. </p><p>The G305 X's specs are almost approaching competitive esports level, and that's certainly nice to have at this price point, though there will always be some compromises. For instance, moving from it to my daily driver, the <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a>, it has a better sensor but worse polling, and the R8's skates gave me instant relief when I swapped. And the R8 does all of this, with an included charging dock and great aesthetics, for $30 less. I didn't realise until I'd swapped mice how much the skates impacted my enjoyment of the G305 X. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3bnUJYtUdDFKLoCUK5d8vb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Pb6U2qqarrEwRcpfCcnvwb-1920-80.jpg" alt="Logitech G305 X Superlight gaming mouse, held in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G305 X is impressive in more than one way, though. Its 35-hour battery life is certainly quite strong. It's also the type of mouse you can just throw in a bag and bring places. I know, as I've done that. It's sturdy, light, small and comes with a small compartment on the bottom for the 2.4 GHz connector. This means it's a very neat little package. </p><p>And that package is partly so neat because of its subdued aesthetic. I've had my hands on the black one, and outside of the RGB strip at the top, it's all very understated. It looks clean on a desk and doesn't distract much from the screen. Its rounded base is not only comfortable but looks neat too.</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 simply want the G305 but better: </strong>This is a very similar mouse, with slightly different RGB, an upgraded sensor, and a battery for wired charging</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong> You want a budget egg-shaped mouse. </strong>The Mchose G3 V2 offers a very similar shape and smoother skates for half the price tag.</p></div></div><p>But Logitech aren't even the only one doing that egg shape anymore. I recently had the chance to test out the rather impressive <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a>, which comes in at less than half the price, and honestly, I'd be picking that instead if it were my cash. The 12,000 DPI in the G3 V2 is lower, but you get the same base polling, a stronger battery life, the exact same weight, and its Omron mechanical switches are very pleasant too. </p><p>That's before mentioning the G3 V2 Pro, which is around ten dollars more than the standard G3V2, comes with an upgraded sensor, and packs a 26,000 max DPI. Mchose's mouse feet are also substantially better, to me.</p><p>The G305 X Superlight does seem like a noticeable improvement over the standard G305 on paper, and in practice, it's a solid mid-range device with strong stats, a solid feel, and a clean look. However, the G305 has partly stood the test of time because you'd always find it on sale, and thanks to a price bump, the G305 X doesn't actually feel like a no-brainer upgrade, especially when the market is more vibrant, varied, and interesting than ever before. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Apparently some of the best gaming mice aren't staying at the right DPI when moved slowly ]]></title>
                                                                                                <dc:content><![CDATA[ <p>According to <a href="https://www.youtube.com/@panDAHLING/videos" target="_blank">one PC peripheral YouTuber</a>, some of the best gaming mice on the market that use the latest sensors aren't sticking at the DPI they're set to (via <a href="https://www.youtube.com/watch?v=enhtpg4NdOU&list=PLeZ6YstWzTKvbe0dmWj9iqWg6zDXXlw0T" target="_blank">MouseCast</a>). At least, not when moved at a very slow speed.</p><p>An <a href="https://x.com/ballsc0nsumer77/status/1737560309240668208?s=20" target="_blank">X user noted</a> the problem a couple of years ago, pointing out the problematic feature in the firmware for some popular mouse sensors: the PixArt PAW3395, PAW3950, and PAW3399. Designed to prevent stationary cursor jitter, the 'DPI downshift' feature (as the X user phrased it) apparently works by throttling higher DPIs down to a lower one for when velocity is very low. </p><p>The potential problem with this is that one might intentionally be moving the mouse very slightly and very slowly, in which case the DPI will be lower than you've set it to and you'll get a slower movement than you might expect.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONVL1O"></div>                            </div>                            <script src="https://kwizly.com/embed/ONVL1O.js" async></script><p>The YouTuber, pandahling, explains that there are three kinds of DPI downshift you might see. One that's binary, where it downshifts to a threshold (usually 7,500 DPI) when above this DPI and at very low velocity. The second type is caused by a profile switch in the firmware which changes things somewhat but still means that most DPI settings will be subject to downshift at low velocities.</p><p>The third kind of DPI downshift is much more slight, but apparently affects every these sensors at every DPI setting, not just at high ones. The YouTuber notes that all four PAW3950 mice they bought recently suffer from this one, as well as the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>, the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market, which uses a newer, custom PixArt sensor.</p><p>The mice tested were found to have a 2–5% downshift in DPI, except for the Viper V4 Pro which was found to have a much higher 8–10% downshift. All only when at very low velocity, of course.</p><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="DsJrPVeQsTaPhVr6UWYTmT" name="New Project (51)" alt="panDAHLING's MouseTester chart for the Viper V4 Pro showing DPI downshift." src="https://cdn.mos.cms.futurecdn.net/DsJrPVeQsTaPhVr6UWYTmT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: panDAHLING @ YouTube)</span></figcaption></figure><p>The graph above, from Pandahling's video, shows MouseTester results for the Viper V4 Pro at 800 DPI and 8K polling.</p><p>The vertical line on the left represents when the mouse moves quickly, and the slope on the right represents it moving the same small distance but very slowly. As you can see, there are fewer 'counts' of deviation from a stationary position when the mouse is moved slowly, which means there are fewer inputs registered by the mouse. </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/ca6ZcU1lZQA" allowfullscreen></iframe></div></div><p>In other words: very slow movement means a decrease in DPI. That's why the slope ends lower on the right than it started on the left. The same distance has been travelled, but there were less dot/count registers on the slow return journey, and MouseTester therefore assumes that it hasn't returned to its starting spot. </p><p>I use a mouse with a PAW3950—the <a href="https://www.pcgamer.com/hardware/gaming-mice/zowie-ec2-dw-review/" target="_blank">Zowie EC2-DW</a>—and haven't noticed any problems, even when making small and slow micro-adjustments when holding an angle in Counter-Strike. But I only play at a low DPI of 800—if it's good enough for CS2 pros then it's good enough for me. And the PAW3950 seemingly doesn't suffer quite as much as the Viper V4 Pro reportedly does from this third type of DPI downshifting that occurs even at lower DPIs.</p><p>I must say, I'm not sure just how much of an effect such slight downshifting would have in practice given I don't tend to move my mouse gradually at a very low velocity—I'll have to try it out once the Viper V4 Pro is back from its merry travels at the PC Gamer offices. But one recommendation for those with an affected sensor, unless the manufacturer has fixed it in a firmware update, might be to keep your mouse DPI at least below 7,500 to make the first two types of more dramatic DPI downshift less likely. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/apparently-some-of-the-best-gaming-mice-arent-staying-at-the-right-dpi-when-moved-slowly/</link>
                                                                            <description>
                            <![CDATA[ 'DPI downshift', they call it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6XoicTMgfDHYBY4VZBNrpU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xoAQ3gfaVyEyyQzmpLvNhC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 15:24:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xoAQ3gfaVyEyyQzmpLvNhC-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Holding a Razer Viper V4 Pro gaming mouse]]></media:description>                                                            <media:text><![CDATA[Holding a Razer Viper V4 Pro gaming mouse]]></media:text>
                                <media:title type="plain"><![CDATA[Holding a Razer Viper V4 Pro gaming mouse]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xoAQ3gfaVyEyyQzmpLvNhC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>According to <a href="https://www.youtube.com/@panDAHLING/videos" target="_blank">one PC peripheral YouTuber</a>, some of the best gaming mice on the market that use the latest sensors aren't sticking at the DPI they're set to (via <a href="https://www.youtube.com/watch?v=enhtpg4NdOU&list=PLeZ6YstWzTKvbe0dmWj9iqWg6zDXXlw0T" target="_blank">MouseCast</a>). At least, not when moved at a very slow speed.</p><p>An <a href="https://x.com/ballsc0nsumer77/status/1737560309240668208?s=20" target="_blank">X user noted</a> the problem a couple of years ago, pointing out the problematic feature in the firmware for some popular mouse sensors: the PixArt PAW3395, PAW3950, and PAW3399. Designed to prevent stationary cursor jitter, the 'DPI downshift' feature (as the X user phrased it) apparently works by throttling higher DPIs down to a lower one for when velocity is very low. </p><p>The potential problem with this is that one might intentionally be moving the mouse very slightly and very slowly, in which case the DPI will be lower than you've set it to and you'll get a slower movement than you might expect.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONVL1O"></div>                            </div>                            <script src="https://kwizly.com/embed/ONVL1O.js" async></script><p>The YouTuber, pandahling, explains that there are three kinds of DPI downshift you might see. One that's binary, where it downshifts to a threshold (usually 7,500 DPI) when above this DPI and at very low velocity. The second type is caused by a profile switch in the firmware which changes things somewhat but still means that most DPI settings will be subject to downshift at low velocities.</p><p>The third kind of DPI downshift is much more slight, but apparently affects every these sensors at every DPI setting, not just at high ones. The YouTuber notes that all four PAW3950 mice they bought recently suffer from this one, as well as the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>, the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market, which uses a newer, custom PixArt sensor.</p><p>The mice tested were found to have a 2–5% downshift in DPI, except for the Viper V4 Pro which was found to have a much higher 8–10% downshift. All only when at very low velocity, of course.</p><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="DsJrPVeQsTaPhVr6UWYTmT" name="New Project (51)" alt="panDAHLING's MouseTester chart for the Viper V4 Pro showing DPI downshift." src="https://cdn.mos.cms.futurecdn.net/DsJrPVeQsTaPhVr6UWYTmT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: panDAHLING @ YouTube)</span></figcaption></figure><p>The graph above, from Pandahling's video, shows MouseTester results for the Viper V4 Pro at 800 DPI and 8K polling.</p><p>The vertical line on the left represents when the mouse moves quickly, and the slope on the right represents it moving the same small distance but very slowly. As you can see, there are fewer 'counts' of deviation from a stationary position when the mouse is moved slowly, which means there are fewer inputs registered by the mouse. </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/ca6ZcU1lZQA" allowfullscreen></iframe></div></div><p>In other words: very slow movement means a decrease in DPI. That's why the slope ends lower on the right than it started on the left. The same distance has been travelled, but there were less dot/count registers on the slow return journey, and MouseTester therefore assumes that it hasn't returned to its starting spot. </p><p>I use a mouse with a PAW3950—the <a href="https://www.pcgamer.com/hardware/gaming-mice/zowie-ec2-dw-review/" target="_blank">Zowie EC2-DW</a>—and haven't noticed any problems, even when making small and slow micro-adjustments when holding an angle in Counter-Strike. But I only play at a low DPI of 800—if it's good enough for CS2 pros then it's good enough for me. And the PAW3950 seemingly doesn't suffer quite as much as the Viper V4 Pro reportedly does from this third type of DPI downshifting that occurs even at lower DPIs.</p><p>I must say, I'm not sure just how much of an effect such slight downshifting would have in practice given I don't tend to move my mouse gradually at a very low velocity—I'll have to try it out once the Viper V4 Pro is back from its merry travels at the PC Gamer offices. But one recommendation for those with an affected sensor, unless the manufacturer has fixed it in a firmware update, might be to keep your mouse DPI at least below 7,500 to make the first two types of more dramatic DPI downshift less likely. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ MSI Versa 300 Wireless 8K review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>MSI might not be the first name you think of when it comes to gaming mice, but the brand has been quietly toiling away with its peripherals in recent times and has come up with the Versa 300 Wireless 8K as its latest entry. On the face of it, with a 26,000 DPI sensor, 8000 Hz wireless polling rate and a light 66g mass, it looks as if this humble rodent could be up there with some of the <a href="https://www.pcgamer.com/the-best-gaming-mouse/">best gaming mice</a> we've tested—I've been putting it through its paces to find out.</p><p>On first impressions, the Versa 300 Wireless 8K comes across a little generic, with an all-black plastic chassis with a rougher texture and little contouring for comfort. That being said, the plastics used in its construction feel quite dense, and there's some pleasant texturing on the sides of the unit to supplement extended use.</p><p>At 66g, too, it's quite a lightweight choice, helping wrist flicks and quick movement without feeling like you're lugging around something heavy, and I'm a fan of how tactile this mouse feels with those textured surfaces, the large rubberised scroll wheel and all the rest of it. </p><p>The button placement here makes sense, with two main options: a DPI switch and a scroll wheel on top, and navigation buttons on the side. On the underside is a selector switch between Bluetooth and 2.4 GHz wireless connectivity modes, and even a little cubby hole for the USB-A receiver that this mouse comes with—neat.</p><div  class="fancy-box"><div class="fancy_box-title">MSI Versa 300 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="CBVZ5xwFtDBjodE9PYe8Pb" name="MSI Versa 300 Wireless 8K 12" caption="" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." src="https://cdn.mos.cms.futurecdn.net/CBVZ5xwFtDBjodE9PYe8Pb-1920-80.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>Buttons: </strong>6<br><strong>Feet:</strong> PTFE<br><strong>Connectivity: </strong>2.4 GHz receiver/Bluetooth, USB-C to USB-A wired<br><strong>Sensor: </strong>PixArt PAW33395<br><strong>Max DPI: </strong>26,000<br><strong>Max acceleration: </strong>50 g<br><strong>Max speed: </strong>650 IPS<br><strong>Polling rate: </strong>8000 Hz (2.4 GHz)<br><strong>Battery life:</strong> Up to 196 hours<br><strong>RGB lighting: </strong>1-zone<br><strong>Warranty: </strong>2 years<br><strong>Price:</strong> $100/£60</p></div></div><p>You do get a small amount of RGB-based flair, with a light-up MSI logo that attempts to protrude through the rear of the chassis—it's there, but seems on the dim side. Likewise, the MSI Center software that's used to control the Versa 300 Wireless 8K is a little bereft of features, allowing you to only remap input and trigger macros, plus some more advanced features such as angle snapping and the debounce time for the mechanical Omron switches this mouse has. If you want to control that singular RGB lighting zone, you'll need to use another app—Portal X—which just seems like more needless faff.</p><p>With this in mind, Portal X is web-based, meaning you can configure the mouse across different operating systems than just Windows, although with the RGB lighting here and not in MSI Center, there isn't feature parity across both suites.</p><p>On the point of those mechanical switches, the Omrons inside here have a firm and tactile click under finger, although they feel as if they've got a longer travel than the more common hybrid or optical switches we're beginning to see on a lot of gaming mice. I don't mind this, but for outright speed and precision, you may want to look at key rivals with a different switch type.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/52G8SiPvaixj2MUViCsFMb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VsBKYozSYf8HCPFBzDbVEb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iFLuLkKSF3nMzc2WXb3HDb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wy6g3gcVBZyZhrWq7arx2b-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/C33nGcGzzcBfUhpuHcYz6b-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>And now to where things matter: performance. MSI has put a 26,000 DPI PixArt PAW3395 sensor inside the Versa 300 Wireless 8K, which I've tested in other gaming mice over the years, and it provides ample sensitivity and responsiveness to make my usual test runs of Counter-Strike 2 a breeze. </p><p>Admittedly, using the full 26,000 DPI on offer all the time is likely to be especially jittery, but you can move it down in software between 100 and the full 26,000 to get a more comfortable level. In my instance, that was between 1600 and 3200 DPI for more accurate aiming in Counter-Strike 2, and for more comfortable navigation in Windows.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Rz42etnXp4Zs639XoKDo8b-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NvURZpdzUNCMmAPaatc4Pb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/z7PjWhR4vLzQa5o2FPhaHb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The 8000 Hz wireless polling rate is also a pleasant move for this rodent, especially against similar rivals such as the <a href="https://www.pcgamer.com/hardware/gaming-mice/endgame-gear-op1w-4k-review/" target="_blank">Endgame Gear OP1w 4K</a> and the <a href="https://www.pcgamer.com/hardware/gaming-mice/be-quiet-dark-perk-ergo-review/" target="_blank">Be Quiet! Dark Perk Ergo</a>, for added responsiveness and potentially lower latency for the pro players who are likely to notice that sort of thing. A higher polling rate means a device reports its position and inputs more frequently (hence Hz as the measurement). </p><p>All of this combines to make this MSI choice feel responsive in shooters, such as CS2, with brisk and responsive movements and inputs with little noticeable latency that make this a strong choice for FPS titles. The switches inside are mechanical ones rated for up to 60 million actuations, making them a durable choice for even the hastiest of spam clickers when you need to get a shot off first.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zZUhC5pTfXUqgC4qansHab-1920-80.png" alt="MouseTester results" /><figcaption>The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/egfRVEPDyLRhsdnEe8h4ab-1920-80.png" alt="MouseTester" /><figcaption>The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2fKbc3HJVCdTVFCDc86LTb-1920-80.png" alt="MouseTester" /><figcaption>Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure></figure><p>Connectivity is handled either by Bluetooth or 2.4 GHz, with the latter supporting the 8000 Hz wireless polling rate. The fact that this mouse also comes with Bluetooth adds some versatility against the competition, which eschews that in favour of outright performance in one device. I found the mouse's connection over either method to be reliable and stable, using Bluetooth on my MacBook Pro and the bundled receiver on my Windows gaming PC.</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 potent specs:</strong> The Versa 300 Wireless 8K impresses with its beefy specs and potent performance for a more affordable price than some of its rivals.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You want stronger software: </strong>Rival choices will offer stronger software suites for more customisation and personalisation, plus you will only use one app to keep life easy.</p></div></div><p>As for battery life, MSI rates the Versa 300 Wireless 8K to run for up to 196 hours via 2.4 GHz at a more standard 1000 Hz polling rate. Up it to 8000 Hz, and you'll throw a lot of that endurance away, with my testing putting it at around 75 hours at full pelt. That's still not bad against other choices, which tend to have a larger drop-off when you run them at full power.</p><p>And then we come to quite a useful piece of information I've purposefully left out—price. MSI has attached a $100/£60 price tag to the Versa 300 Wireless 8K, making it surprisingly affordable against rivals mentioned above for the feature set on offer here. On the whole, it helps this choice stand out if you're after a powerful and lightweight rodent for FPS titles that doesn't break the bank.</p><p>With this in mind, I think other options from the likes of Endgame Gear or SteelSeries look a little more eye-catching and have stronger software features for a similar outlay. This MSI one does well on features and performance, although I think it lacks a certain polish to make it a real top contender.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/msi-versa-300-wireless-8k-review/</link>
                                                                            <description>
                            <![CDATA[ Surprisingly potent. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9yFaBcP8M4acKy3vvNHd3S</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JBmtjZP3tFxWBytcBD26Jb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 15 Jun 2026 15:35:37 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Reece Bithrey ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DN8S8rM2Gfi7mBgPBtt3eb-320-70.jpg ]]></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/JBmtjZP3tFxWBytcBD26Jb-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MSI Versa 300 Wireless 8K on a desk and held in a hand.]]></media:description>                                                            <media:text><![CDATA[MSI Versa 300 Wireless 8K on a desk and held in a hand.]]></media:text>
                                <media:title type="plain"><![CDATA[MSI Versa 300 Wireless 8K on a desk and held in a hand.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JBmtjZP3tFxWBytcBD26Jb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>MSI might not be the first name you think of when it comes to gaming mice, but the brand has been quietly toiling away with its peripherals in recent times and has come up with the Versa 300 Wireless 8K as its latest entry. On the face of it, with a 26,000 DPI sensor, 8000 Hz wireless polling rate and a light 66g mass, it looks as if this humble rodent could be up there with some of the <a href="https://www.pcgamer.com/the-best-gaming-mouse/">best gaming mice</a> we've tested—I've been putting it through its paces to find out.</p><p>On first impressions, the Versa 300 Wireless 8K comes across a little generic, with an all-black plastic chassis with a rougher texture and little contouring for comfort. That being said, the plastics used in its construction feel quite dense, and there's some pleasant texturing on the sides of the unit to supplement extended use.</p><p>At 66g, too, it's quite a lightweight choice, helping wrist flicks and quick movement without feeling like you're lugging around something heavy, and I'm a fan of how tactile this mouse feels with those textured surfaces, the large rubberised scroll wheel and all the rest of it. </p><p>The button placement here makes sense, with two main options: a DPI switch and a scroll wheel on top, and navigation buttons on the side. On the underside is a selector switch between Bluetooth and 2.4 GHz wireless connectivity modes, and even a little cubby hole for the USB-A receiver that this mouse comes with—neat.</p><div  class="fancy-box"><div class="fancy_box-title">MSI Versa 300 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="CBVZ5xwFtDBjodE9PYe8Pb" name="MSI Versa 300 Wireless 8K 12" caption="" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." src="https://cdn.mos.cms.futurecdn.net/CBVZ5xwFtDBjodE9PYe8Pb-1920-80.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>Buttons: </strong>6<br><strong>Feet:</strong> PTFE<br><strong>Connectivity: </strong>2.4 GHz receiver/Bluetooth, USB-C to USB-A wired<br><strong>Sensor: </strong>PixArt PAW33395<br><strong>Max DPI: </strong>26,000<br><strong>Max acceleration: </strong>50 g<br><strong>Max speed: </strong>650 IPS<br><strong>Polling rate: </strong>8000 Hz (2.4 GHz)<br><strong>Battery life:</strong> Up to 196 hours<br><strong>RGB lighting: </strong>1-zone<br><strong>Warranty: </strong>2 years<br><strong>Price:</strong> $100/£60</p></div></div><p>You do get a small amount of RGB-based flair, with a light-up MSI logo that attempts to protrude through the rear of the chassis—it's there, but seems on the dim side. Likewise, the MSI Center software that's used to control the Versa 300 Wireless 8K is a little bereft of features, allowing you to only remap input and trigger macros, plus some more advanced features such as angle snapping and the debounce time for the mechanical Omron switches this mouse has. If you want to control that singular RGB lighting zone, you'll need to use another app—Portal X—which just seems like more needless faff.</p><p>With this in mind, Portal X is web-based, meaning you can configure the mouse across different operating systems than just Windows, although with the RGB lighting here and not in MSI Center, there isn't feature parity across both suites.</p><p>On the point of those mechanical switches, the Omrons inside here have a firm and tactile click under finger, although they feel as if they've got a longer travel than the more common hybrid or optical switches we're beginning to see on a lot of gaming mice. I don't mind this, but for outright speed and precision, you may want to look at key rivals with a different switch type.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/52G8SiPvaixj2MUViCsFMb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VsBKYozSYf8HCPFBzDbVEb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iFLuLkKSF3nMzc2WXb3HDb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wy6g3gcVBZyZhrWq7arx2b-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/C33nGcGzzcBfUhpuHcYz6b-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>And now to where things matter: performance. MSI has put a 26,000 DPI PixArt PAW3395 sensor inside the Versa 300 Wireless 8K, which I've tested in other gaming mice over the years, and it provides ample sensitivity and responsiveness to make my usual test runs of Counter-Strike 2 a breeze. </p><p>Admittedly, using the full 26,000 DPI on offer all the time is likely to be especially jittery, but you can move it down in software between 100 and the full 26,000 to get a more comfortable level. In my instance, that was between 1600 and 3200 DPI for more accurate aiming in Counter-Strike 2, and for more comfortable navigation in Windows.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Rz42etnXp4Zs639XoKDo8b-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NvURZpdzUNCMmAPaatc4Pb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/z7PjWhR4vLzQa5o2FPhaHb-1920-80.jpg" alt="MSI Versa 300 Wireless 8K on a desk and held in a hand." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The 8000 Hz wireless polling rate is also a pleasant move for this rodent, especially against similar rivals such as the <a href="https://www.pcgamer.com/hardware/gaming-mice/endgame-gear-op1w-4k-review/" target="_blank">Endgame Gear OP1w 4K</a> and the <a href="https://www.pcgamer.com/hardware/gaming-mice/be-quiet-dark-perk-ergo-review/" target="_blank">Be Quiet! Dark Perk Ergo</a>, for added responsiveness and potentially lower latency for the pro players who are likely to notice that sort of thing. A higher polling rate means a device reports its position and inputs more frequently (hence Hz as the measurement). </p><p>All of this combines to make this MSI choice feel responsive in shooters, such as CS2, with brisk and responsive movements and inputs with little noticeable latency that make this a strong choice for FPS titles. The switches inside are mechanical ones rated for up to 60 million actuations, making them a durable choice for even the hastiest of spam clickers when you need to get a shot off first.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zZUhC5pTfXUqgC4qansHab-1920-80.png" alt="MouseTester results" /><figcaption>The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/egfRVEPDyLRhsdnEe8h4ab-1920-80.png" alt="MouseTester" /><figcaption>The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2fKbc3HJVCdTVFCDc86LTb-1920-80.png" alt="MouseTester" /><figcaption>Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">MouseTester</small></figcaption></figure></figure><p>Connectivity is handled either by Bluetooth or 2.4 GHz, with the latter supporting the 8000 Hz wireless polling rate. The fact that this mouse also comes with Bluetooth adds some versatility against the competition, which eschews that in favour of outright performance in one device. I found the mouse's connection over either method to be reliable and stable, using Bluetooth on my MacBook Pro and the bundled receiver on my Windows gaming PC.</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 potent specs:</strong> The Versa 300 Wireless 8K impresses with its beefy specs and potent performance for a more affordable price than some of its rivals.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You want stronger software: </strong>Rival choices will offer stronger software suites for more customisation and personalisation, plus you will only use one app to keep life easy.</p></div></div><p>As for battery life, MSI rates the Versa 300 Wireless 8K to run for up to 196 hours via 2.4 GHz at a more standard 1000 Hz polling rate. Up it to 8000 Hz, and you'll throw a lot of that endurance away, with my testing putting it at around 75 hours at full pelt. That's still not bad against other choices, which tend to have a larger drop-off when you run them at full power.</p><p>And then we come to quite a useful piece of information I've purposefully left out—price. MSI has attached a $100/£60 price tag to the Versa 300 Wireless 8K, making it surprisingly affordable against rivals mentioned above for the feature set on offer here. On the whole, it helps this choice stand out if you're after a powerful and lightweight rodent for FPS titles that doesn't break the bank.</p><p>With this in mind, I think other options from the likes of Endgame Gear or SteelSeries look a little more eye-catching and have stronger software features for a similar outlay. This MSI one does well on features and performance, although I think it lacks a certain polish to make it a real top contender.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ ProtoArc EM25 ergonomic mouse review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you're looking for an ergonomic PC mouse, you're probably already considering the Logitech MX Master 3S, or the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mx-master-4-review/" target="_blank">Logitech MX Master 4</a>. I've used both as my main productivity meeces for extended periods of time, and can tell you that either make for excellent picks. But, if they're a little pricey for your liking, ProtoArc has made an ergo mouse with many similar design features for much, much less.<br><br>The result is the ProtoArc EM25, a wireless ergonomic mouse that knows what it's about. Right from the off, it screams "budget MX Master" from the nearest rooftop. It's got a similar chassis shape, an extended thumb rest, two scroll wheels (one with a clutch, no less), quiet main switches—the whole kit and kaboodle. The problem is, at every turn, this mouse reminds you of why the Logi mice are brilliant, and why this one doesn't meet the mark.<br><br>It's got all the right features on paper, but most of them prove to be a disappointment in practice. It's also got some odd material choices, some strange-feeling mechanisms, and an overall lack of refinement. Dancing around this mouse's various controls over the past few weeks has caused me to pull a vast array of facial expressions, and none of them have been a smile. Almost every control here feels slightly wrong, in a plethora of different ways.<br><br>There's a certain solidity to the chassis design that makes the EM25 verge towards consideration—especially given its very reasonable <a href="https://www.protoarc.com/products/em25-fast-scroll-ergonomic-mouse" target="_blank">$50</a>/<a href="https://www.amazon.co.uk/ProtoArc-EM25-Ergonomic-Customizable-Rechargeable-Black/dp/B0G5ZH7N5L/" target="_blank">£29</a> price tag. However, unless you're absolutely desperate for an MX Master-a-like for less, I can think of lots of less-ergo, but much better standard mice for your money.</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 absolutely desperate for an MX Master-alike, but can't afford one: </strong>If you simply must have something with the rough shape and quiet clicks of Logitech's finest, but lack the cash, then perhaps the EM25 has something to offer. I'd still save up for the real thing, though.</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 want pleasant controls: </strong>The ProtoArc mouse's various buttons and wheels are all present, but far from correct. The main switches are actually pretty good, but the other controls are all varying kinds of wrong.<br><br>❌ <strong>You want a smooth ride: </strong>The EM25's biggest issue is the skates underneath, which feel like they could do with a good sanding down.</p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781271554779-1t0wx7lkx *, #fv-chart-1781271554779-1t0wx7lkx *:before, #fv-chart-1781271554779-1t0wx7lkx *:after, #fv-chart-1781271554779-1t0wx7lkx-slideshow *, #fv-chart-1781271554779-1t0wx7lkx-slideshow *:before, #fv-chart-1781271554779-1t0wx7lkx-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781271554779-1t0wx7lkx, #fv-chart-1781271554779-1t0wx7lkx-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781271554779-1t0wx7lkx {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781271554779-1t0wx7lkx.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-1781271554779-1t0wx7lkx .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781271554779-1t0wx7lkx-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781271554779-1t0wx7lkx-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx-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; }}#fv-chart-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781271554779-1t0wx7lkx-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-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;}#fv-chart-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-row, #fv-chart-1781271554779-1t0wx7lkx .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781271554779-1t0wx7lkx .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-pie-container,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-bar-row,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stacked-product,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-grouped-bar-product,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-row,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stacked-product,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781271554779-1t0wx7lkx.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-1781271554779-1t0wx7lkx.mobile-view .fv-bar-label,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-grouped-product-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-label,#fv-chart-1781271554779-1t0wx7lkx.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-1781271554779-1t0wx7lkx.mobile-view .fv-bar-container,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-bar-cluster,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-container,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-x-axis-wrapper,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-x-axis-label-space,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-x-axis-chart-space,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-benchmark-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-dropdown-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-carousel-nav-btn,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-chart-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-chart-subhead,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-header,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-wrapper,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-vs,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-container,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781271554779-1t0wx7lkx.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781271554779-1t0wx7lkx .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-bar-row,#fv-chart-1781271554779-1t0wx7lkx .fv-stacked-product,#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-label,#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-container,#fv-chart-1781271554779-1t0wx7lkx .fv-bar-cluster {width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-label-space {display: none !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-logo,#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781271554779-1t0wx7lkx.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-06-12T13:39:14.779Z","citation": "We scored the ProtoArc EM25 out of five in six distinct categories.","keywords": ["ProtoArc EM25 gaming mouse","Features","Ergonomics","Performance","Aesthetics","Software","Value","Group 1","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Features","value": 3.5,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Ergonomics","value": 1,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Performance","value": 2.5,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Aesthetics","value": 4,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Software","value": 2,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Value","value": 2,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781271554779-1t0wx7lkx" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781271554779-1t0wx7lkx-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="We scored the ProtoArc EM25 out of five in six distinct categories." 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="ProtoArc EM25 gaming mouse - Features: 3.5 "><div class="fv-bar-label">Features</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 70%; background-color: #E33235;" data-target-width="70" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3.5</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Ergonomics: 1 "><div class="fv-bar-label">Ergonomics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 20%; background-color: #E33235;" data-target-width="20" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Performance: 2.5 "><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #E33235;" data-target-width="50" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2.5</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Aesthetics: 4 "><div class="fv-bar-label">Aesthetics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E33235;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Software: 2 "><div class="fv-bar-label">Software</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Value: 2 "><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Features ()</th><th>Ergonomics ()</th><th>Performance ()</th><th>Aesthetics ()</th><th>Software ()</th><th>Value ()</th></tr></thead><tbody><tr><td>ProtoArc EM25 gaming mouse</td><td>3.5</td><td>1</td><td>2.5</td><td>4</td><td>2</td><td>2</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">We scored the ProtoArc EM25 out of five in six distinct categories.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781271554779-1t0wx7lkx', false); });} else {initialize('fv-chart-1781271554779-1t0wx7lkx', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-features"><span>ProtoArc EM25 features</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>ProtoArc EM25</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Ergonomic mouse</p></td></tr><tr><td class="firstcol " ><p><strong>Max polling rate</strong></p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>8,000</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>500 mAh</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>90 g</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz wireless, Bluetooth</p></td></tr><tr><td class="firstcol " ><p><strong>Buttons and controls</strong></p></td><td  ><p>Six programmable buttons, two scroll wheels (one horizontal), clutch system, quiet main switches</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.protoarc.com/products/em25-fast-scroll-ergonomic-mouse" target="_blank">$50</a>/<a href="https://www.amazon.co.uk/ProtoArc-EM25-Ergonomic-Customizable-Rechargeable-Black/dp/B0G5ZH7N5L/" target="_blank">£29</a></p></td></tr></tbody></table></div><p>The ProtoArc EM25 is an ergonomically-shaped mouse with a clutch-controlled main scroll wheel, a horizontal side scroll wheel, and an enlarged thumbrest on the left hand side, à la the Logitech MX Master 3S/4. It's also got twin forward and back buttons, and a small button mounted on the front left corner for switching between its Bluetooth and regular 2.4 GHz connections, the latter of which makes use of a small (some would say, nano-sized) dongle.</p><p>Said dongle can be retrieved from the bottom of the mouse via a magnetically-sealed hatch compartment, which is a nice touch. The polling rate is switchable, topping out at 1,000 Hz.</p><p>The sensor is an 8000 DPI max optical unit, while the battery is a 500 mAh internal rechargeable model. ProtoArc doesn't list the battery life in among the specs, but I've only had to charge my review sample once (straight from the box) over several weeks of on and off testing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XisxVuwP3Dnbpz2y7mQV2n-1920-80.jpg" alt="A ProtoArc EM25 ergonomic mouse on a wooden desk, in front of a mouse pad" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bkLE7ZTRJuzyDGnv4bsmNf-1920-80.jpg" alt="A ProtoArc EM25 ergonomic mouse in front of a Logitech MX Master 4 on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tAAEvUkGfxWRLUrYNorfz5-1920-80.jpg" alt="A Logitech MX Master 4 and a ProtoArc EM25 ergo mouse side by side on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mCbF6agvHSftsTC2HEKs8C-1920-80.jpg" alt="A ProtoArc EM25 turned upside down, showing the magnetic hatch underneath" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Software comes in the form of a web app rather than an installed application, which I'll be going into a bit later. And, again like the MX Master 3S and 4S, it's got quiet click switches underneath the main left and right buttons, for your serene, productivity-clicking needs. </p><p>The weight isn't listed on the product page, but some searching around suggests it's about 90 grams. What I will say is that the EM25 is light enough to give my scales trouble measuring it, and it feels significantly less porky than the 150g MX Master 4. </p><p>Still, it's definitely built for productivity purposes—those looking for something fast and genuinely light would be better off elsewhere.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781272372918-zriix39lm *, #fv-chart-1781272372918-zriix39lm *:before, #fv-chart-1781272372918-zriix39lm *:after, #fv-chart-1781272372918-zriix39lm-slideshow *, #fv-chart-1781272372918-zriix39lm-slideshow *:before, #fv-chart-1781272372918-zriix39lm-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781272372918-zriix39lm, #fv-chart-1781272372918-zriix39lm-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781272372918-zriix39lm {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781272372918-zriix39lm.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781272372918-zriix39lm.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-1781272372918-zriix39lm .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781272372918-zriix39lm-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781272372918-zriix39lm-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781272372918-zriix39lm-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; }}#fv-chart-1781272372918-zriix39lm-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-1781272372918-zriix39lm-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-1781272372918-zriix39lm-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781272372918-zriix39lm-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781272372918-zriix39lm-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-1781272372918-zriix39lm-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;}#fv-chart-1781272372918-zriix39lm-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-1781272372918-zriix39lm-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781272372918-zriix39lm .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781272372918-zriix39lm .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781272372918-zriix39lm .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781272372918-zriix39lm .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781272372918-zriix39lm .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272372918-zriix39lm .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781272372918-zriix39lm .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781272372918-zriix39lm .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781272372918-zriix39lm .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781272372918-zriix39lm .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781272372918-zriix39lm .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781272372918-zriix39lm .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781272372918-zriix39lm .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-row, #fv-chart-1781272372918-zriix39lm .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781272372918-zriix39lm .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781272372918-zriix39lm .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781272372918-zriix39lm .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781272372918-zriix39lm .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781272372918-zriix39lm .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781272372918-zriix39lm .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781272372918-zriix39lm .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781272372918-zriix39lm .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781272372918-zriix39lm .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781272372918-zriix39lm .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-pie-container,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-bar-row,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stacked-product,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-grouped-bar-product,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-row,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stacked-product,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781272372918-zriix39lm.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-1781272372918-zriix39lm.mobile-view .fv-bar-label,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-grouped-product-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-label,#fv-chart-1781272372918-zriix39lm.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-1781272372918-zriix39lm.mobile-view .fv-bar-container,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-bar-cluster,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-container,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-x-axis-wrapper,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-x-axis-label-space,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-x-axis-chart-space,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-benchmark-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-dropdown-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-carousel-nav-btn,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-chart-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-chart-subhead,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-header,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-wrapper,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-vs,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-container,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272372918-zriix39lm.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781272372918-zriix39lm .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272372918-zriix39lm .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-bar-row,#fv-chart-1781272372918-zriix39lm .fv-stacked-product,#fv-chart-1781272372918-zriix39lm .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-label,#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-container,#fv-chart-1781272372918-zriix39lm .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272372918-zriix39lm .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-logo,#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272372918-zriix39lm .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272372918-zriix39lm.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-06-12T13:52:52.918Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Features","Plenty of control options","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Features – Plenty of control options","value": 3.5,"unitText": ""}]}</script><div id="fv-chart-1781272372918-zriix39lm" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781272372918-zriix39lm-bar-Plenty of control options" data-chart-type="Bar" data-title="Plenty of control options" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Plenty of control options</h4><div class="fv-bar-row" title="Features - Plenty of control options: 3.5 "><div class="fv-bar-label fv-primary-product">Features</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 87.5%; background-color: #E33235;" data-target-width="87.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3.5</span></div></div></div></div><table class="sr-only"><caption>Plenty of control options Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Features</td><td>3.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781272372918-zriix39lm', false); });} else {initialize('fv-chart-1781272372918-zriix39lm', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-ergonomics"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zUWXg2Xszg3m56HECXVpfG" name="20260611_142145" alt="A close up of the scroll wheel of the ProtoArc EM25 ergonomic mouse" src="https://cdn.mos.cms.futurecdn.net/zUWXg2Xszg3m56HECXVpfG-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Testing out all of the buttons, wheels, and ergonomic features of the ProtoArc EM25 is something of an adventure, and that's because almost all of them, in some form or fashion, feel a bit… wrong. I'm going to need to go through them individually here, because each is worthy of note.</p><p>Let's start off with the good. The two main switches underneath the left and right buttons feel very positive. They're quiet, too, while still providing plenty of clicky feedback. You can tell most of the money went into these two switch units, and that's a sensible place to put it. They're the ones you'll be interacting with most, after all.</p><p>Then there are the traditional forward and back thumb buttons on the left hand side. These are hollow-feeling, bendy, and springy in all the wrong ways. Still, there's a positive click underneath them, and I'm sure you'd stop noticing their drawbacks over time.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/RPmApYxh44sQXRXhbjvRgN-1920-80.jpg" alt="The top clutch button of the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mApEapydJbtd3ieCo3tsST-1920-80.jpg" alt="The side buttons and connection-switching button of the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VCbMdBc8FGZpBY96uiHTpX-1920-80.jpg" alt="The side scroll wheel of the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>My true ire, however, begins with the big orange clutch button behind the main scrollwheel. It's got an astonishingly long travel, a surprising amount of springy resistance, and seems to engage and disengage the scrollwheel clutch at differing points, <em>somewhere </em>along the way. </p><p>There's a physical mechanism working behind the scenes to switch the scroll wheel from free scroll into a more clicky affair, unlike Logitech's magnetic solution, and the difference is pretty stark. Which brings me on to the main wheel itself.</p><p>In free scroll mode, it feels disconcertingly light. So much so that it can be quite difficult to control, and the wheel moves from side-to-side in its housing more than I'd like. In ratcheted mode, it feels slightly graunchy and overly-loud, although fairly positive. The middle click, though, takes far too much force to activate, and results in the wheel inadvertently moving as you press down on 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4PDFZxCnKUjq4MmdVhe3pf" name="20260611_142223" alt="The underside of a ProtoArc EM25 ergonomic mouse" src="https://cdn.mos.cms.futurecdn.net/4PDFZxCnKUjq4MmdVhe3pf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Despite all this, my biggest critique has to be left for the skates on the underside. They look acceptable in person, and feel fine when you run a finger over them. But, no matter the mouse pad, it feels like there's a raised edge somewhere that should have been sanded down. </p><p>I can actually hear (and feel) this mouse scraping against my smooth Corsair pad as I move. I'll be honest, that's a new one on me. And I've tested lots and lots of budget mice over the years. Unmute the video below and turn your sound up for an example:</p><iframe src="https://content.jwplatform.com/players/Z0Jfptu0.html" id="Z0Jfptu0" title="ProtoArc EM25 Mouse Pad Testing" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Shape-wise? It's actually quite nice to palm, and perfectly fine for fingertip usage, too. I'm not  convinced by the satin-style finish, though, which is a bit tacky. And by that, I mean literally. Tacky, as in it tacks against your skin. Eesh.</p><p>Oh, and there's a side scroll wheel as well, which is somehow totally different-feeling and yet similar to the main scroll wheel itself. It's… fine. A little loose, a little hollow-feeling, a little tinny. But fine. Mercy me.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781272882166-zkppseiq4 *, #fv-chart-1781272882166-zkppseiq4 *:before, #fv-chart-1781272882166-zkppseiq4 *:after, #fv-chart-1781272882166-zkppseiq4-slideshow *, #fv-chart-1781272882166-zkppseiq4-slideshow *:before, #fv-chart-1781272882166-zkppseiq4-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781272882166-zkppseiq4, #fv-chart-1781272882166-zkppseiq4-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781272882166-zkppseiq4 {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781272882166-zkppseiq4.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781272882166-zkppseiq4.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-1781272882166-zkppseiq4 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781272882166-zkppseiq4-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781272882166-zkppseiq4-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781272882166-zkppseiq4-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; }}#fv-chart-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781272882166-zkppseiq4-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-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;}#fv-chart-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781272882166-zkppseiq4 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781272882166-zkppseiq4 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781272882166-zkppseiq4 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-row, #fv-chart-1781272882166-zkppseiq4 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781272882166-zkppseiq4 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781272882166-zkppseiq4 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781272882166-zkppseiq4 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781272882166-zkppseiq4 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781272882166-zkppseiq4 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781272882166-zkppseiq4 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781272882166-zkppseiq4 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-pie-container,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-bar-row,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stacked-product,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-grouped-bar-product,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-row,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stacked-product,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781272882166-zkppseiq4.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-1781272882166-zkppseiq4.mobile-view .fv-bar-label,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-grouped-product-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-label,#fv-chart-1781272882166-zkppseiq4.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-1781272882166-zkppseiq4.mobile-view .fv-bar-container,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-bar-cluster,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-container,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-x-axis-wrapper,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-x-axis-label-space,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-x-axis-chart-space,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-benchmark-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-dropdown-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-carousel-nav-btn,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-chart-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-chart-subhead,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-header,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-wrapper,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-vs,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-container,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272882166-zkppseiq4.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781272882166-zkppseiq4 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272882166-zkppseiq4 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-bar-row,#fv-chart-1781272882166-zkppseiq4 .fv-stacked-product,#fv-chart-1781272882166-zkppseiq4 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-label,#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-container,#fv-chart-1781272882166-zkppseiq4 .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-logo,#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272882166-zkppseiq4.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-06-12T14:01:22.166Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Ergonomics","The main switches are fine, but as for the rest? Nope.","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Ergonomics – Ergonomics","value": 1,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781272882166-zkppseiq4" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781272882166-zkppseiq4-bar-Ergonomics" data-chart-type="Bar" data-title="The main switches are fine, but as for the rest? Nope." data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">The main switches are fine, but as for the rest? Nope.</h4><div class="fv-bar-row" title="Ergonomics - The main switches are fine, but as for the rest? Nope.: 1 "><div class="fv-bar-label fv-primary-product">Ergonomics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 20%; background-color: #E33235;" data-target-width="20" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1</span></div></div></div></div><table class="sr-only"><caption>The main switches are fine, but as for the rest? Nope. Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Ergonomics</td><td>1</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781272882166-zkppseiq4', false); });} else {initialize('fv-chart-1781272882166-zkppseiq4', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-performance"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jh8CFChsFx5Z9jMBizHjc" name="20260611_142328" alt="A ProtoArc EM25 ergonomic mouse facing a Logitech MX Master 4 in front of a gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/jh8CFChsFx5Z9jMBizHjc-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At no point does ProtoArc advertise the EM25 as a gaming mouse, and given its specs, I don't think many will be buying it for such a purpose. </p><p>However, I game with the Logitech MX Master 4 all the time, as it's perfectly reasonable to use for several thousand turns of Civ 7, or a slower-paced, singleplayer shooter. So, I thought I'd try out the EM25 for the same purpose. And you know what? It's also fine.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8KBgqaWWMcxzUYTfVJfiJD-1920-80.png" alt="A velocity vs time chart for the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uMQr4Xh65qxovjoBpn6PMD-1920-80.png" alt="An X count vs time chart for the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iQ2Pit4JFp3Y96Yjuw43LD-1920-80.png" alt="An interval vs time chart for the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">MouseTester</small></figcaption></figure></figure><p>However, the MouseTester charts above show some odd inconsistencies in the polling rate, although I can't say I noticed the mouse feeling particularly laggy or inconsistent in practice. It's not super-accurate or particularly fast to respond, but it's decent enough to get by. Can you do some light gaming with an EM25? Yes. Should you? Probably not.</p><p>For day to day usage, the sensor feels smooth and reasonably accurate, and I've had no dropout issues with either the 2.4 GHz or the Bluetooth connection. In terms of the internal, movement-tracking components, this mouse delivers acceptable performance for a pure productivity squeaker. In terms of the experience of actually using it, see all the ergonomic issues above.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781272956410-jr1d4t153 *, #fv-chart-1781272956410-jr1d4t153 *:before, #fv-chart-1781272956410-jr1d4t153 *:after, #fv-chart-1781272956410-jr1d4t153-slideshow *, #fv-chart-1781272956410-jr1d4t153-slideshow *:before, #fv-chart-1781272956410-jr1d4t153-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781272956410-jr1d4t153, #fv-chart-1781272956410-jr1d4t153-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781272956410-jr1d4t153 {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781272956410-jr1d4t153.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781272956410-jr1d4t153.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-1781272956410-jr1d4t153 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781272956410-jr1d4t153-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781272956410-jr1d4t153-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781272956410-jr1d4t153-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; }}#fv-chart-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781272956410-jr1d4t153-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-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;}#fv-chart-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781272956410-jr1d4t153 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781272956410-jr1d4t153 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781272956410-jr1d4t153 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-row, #fv-chart-1781272956410-jr1d4t153 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781272956410-jr1d4t153 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781272956410-jr1d4t153 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781272956410-jr1d4t153 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781272956410-jr1d4t153 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781272956410-jr1d4t153 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781272956410-jr1d4t153 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781272956410-jr1d4t153 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-pie-container,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-bar-row,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stacked-product,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-grouped-bar-product,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-row,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stacked-product,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781272956410-jr1d4t153.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-1781272956410-jr1d4t153.mobile-view .fv-bar-label,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-grouped-product-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-label,#fv-chart-1781272956410-jr1d4t153.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-1781272956410-jr1d4t153.mobile-view .fv-bar-container,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-bar-cluster,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-container,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-x-axis-wrapper,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-x-axis-label-space,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-x-axis-chart-space,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-benchmark-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-dropdown-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-carousel-nav-btn,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-chart-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-chart-subhead,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-header,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-wrapper,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-vs,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-container,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272956410-jr1d4t153.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781272956410-jr1d4t153 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272956410-jr1d4t153 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-bar-row,#fv-chart-1781272956410-jr1d4t153 .fv-stacked-product,#fv-chart-1781272956410-jr1d4t153 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-label,#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-container,#fv-chart-1781272956410-jr1d4t153 .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-logo,#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272956410-jr1d4t153.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-06-12T14:02:36.410Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Performance","Acceptable, for an ergo mouse","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Performance – Performance","value": 2.5,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781272956410-jr1d4t153" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781272956410-jr1d4t153-bar-Performance" data-chart-type="Bar" data-title="Acceptable, for an ergo mouse" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Acceptable, for an ergo mouse</h4><div class="fv-bar-row" title="Performance - Acceptable, for an ergo mouse: 2.5 "><div class="fv-bar-label fv-primary-product">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #E33235;" data-target-width="50" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2.5</span></div></div></div></div><table class="sr-only"><caption>Acceptable, for an ergo mouse Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Performance</td><td>2.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781272956410-jr1d4t153', false); });} else {initialize('fv-chart-1781272956410-jr1d4t153', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-aesthetics"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DT2vrUgjz4afUqP58KRkfa" name="20260612_152450" alt="A ProtoArc EM25 ergonomic mouse looking handsome" src="https://cdn.mos.cms.futurecdn.net/DT2vrUgjz4afUqP58KRkfa-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Despite the drawbacks of the satin finish in terms of hand-feel, the coating actually looks pretty great in photos, and in person, too. I also like how the EM25 is highly reminiscent of Logitech's offerings, while having a neater, tidier design of its own.</p><p>The orange button sticking out of the top also adds a nice splash of colour to the black-and-chrome aesthetic. It's a mouse that looks good on your desk, that's for sure. I just wish it felt anywhere near as good when I put my hands on it.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781273029174-l1rscniv3 *, #fv-chart-1781273029174-l1rscniv3 *:before, #fv-chart-1781273029174-l1rscniv3 *:after, #fv-chart-1781273029174-l1rscniv3-slideshow *, #fv-chart-1781273029174-l1rscniv3-slideshow *:before, #fv-chart-1781273029174-l1rscniv3-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781273029174-l1rscniv3, #fv-chart-1781273029174-l1rscniv3-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781273029174-l1rscniv3 {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781273029174-l1rscniv3.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781273029174-l1rscniv3.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-1781273029174-l1rscniv3 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781273029174-l1rscniv3-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781273029174-l1rscniv3-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781273029174-l1rscniv3-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; }}#fv-chart-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781273029174-l1rscniv3-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-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;}#fv-chart-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781273029174-l1rscniv3 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781273029174-l1rscniv3 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781273029174-l1rscniv3 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-row, #fv-chart-1781273029174-l1rscniv3 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781273029174-l1rscniv3 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781273029174-l1rscniv3 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781273029174-l1rscniv3 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781273029174-l1rscniv3 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781273029174-l1rscniv3 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781273029174-l1rscniv3 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781273029174-l1rscniv3 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-pie-container,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-bar-row,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stacked-product,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-grouped-bar-product,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-row,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stacked-product,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781273029174-l1rscniv3.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-1781273029174-l1rscniv3.mobile-view .fv-bar-label,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-grouped-product-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-label,#fv-chart-1781273029174-l1rscniv3.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-1781273029174-l1rscniv3.mobile-view .fv-bar-container,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-bar-cluster,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-container,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-x-axis-wrapper,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-x-axis-label-space,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-x-axis-chart-space,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-benchmark-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-dropdown-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-carousel-nav-btn,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-chart-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-chart-subhead,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-header,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-wrapper,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-vs,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-container,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273029174-l1rscniv3.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781273029174-l1rscniv3 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273029174-l1rscniv3 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-bar-row,#fv-chart-1781273029174-l1rscniv3 .fv-stacked-product,#fv-chart-1781273029174-l1rscniv3 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-label,#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-container,#fv-chart-1781273029174-l1rscniv3 .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-logo,#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273029174-l1rscniv3.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-06-12T14:03:49.175Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Aesthetics","Quite the looker, it must be said","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Aesthetics – Quite the looker, it must be said","value": 4,"unitText": ""}]}</script><div id="fv-chart-1781273029174-l1rscniv3" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781273029174-l1rscniv3-bar-Quite the looker, it must be said" data-chart-type="Bar" data-title="Quite the looker, it must be said" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Quite the looker, it must be said</h4><div class="fv-bar-row" title="Aesthetics - Quite the looker, it must be said: 4 "><div class="fv-bar-label fv-primary-product">Aesthetics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E33235;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><table class="sr-only"><caption>Quite the looker, it must be said Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Aesthetics</td><td>4</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781273029174-l1rscniv3', false); });} else {initialize('fv-chart-1781273029174-l1rscniv3', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-software"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ncrFJisWyUkPruxSFPz4fT" name="20260612_153027" alt="The ProtoArc web software for its EM25 ergonomic mouse" src="https://cdn.mos.cms.futurecdn.net/ncrFJisWyUkPruxSFPz4fT-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ProtoArc)</span></figcaption></figure><p>Your software options here are webpage-based, which, on my Chrome browser, renders all the text in a Times New Roman font. I know that's a small thing to point out, but it doesn't exactly inspire confidence in the design. However, there are plenty of options to reassign button functions, create macros, and tweak the general settings of the mouse. By default, the EM25 sets itself to a 250 Hz polling rate, but it can be upped to the full 1,000 Hz here.</p><p>Despite the functionality, the interface really does feel basic, with some confusingly-labelled features. An "Advanced Controls" tab allows you to switch on "maximum sensor performance" for limited amounts of time, from 10 seconds to half an hour. </p><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="nn4xtq8xaVTZiHWfKNbswn" name="ProtoArcsoftwareNew Project" alt="A screenshot of various settings options in the ProtoArc web software" src="https://cdn.mos.cms.futurecdn.net/nn4xtq8xaVTZiHWfKNbswn-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/nn4xtq8xaVTZiHWfKNbswn-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ProtoArc)</span></figcaption></figure><p>It "runs the sensor at peak performance with high LED brightness" says the menu page, although with a warning of increased power consumption. Fair enough. I've left it off for my testing, as you can only enable it for a 30 minute maximum, and in my opinion, you're bound to forget the option exists. You can also adjust the click debounce time, or activate an Extended Range Mode which supposedly boosts the range from 8-10 meters to 10-12, again, diminishing battery life.</p><p>I tested it, and I couldn't tell the difference in terms of using the mouse from different ranges. Still, it manages to transmit successfully over the whole distance of my large front room with the setting turned off, so hooray for a bit of extra juice.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper *, #fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper *:before, #fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper *:after, #fv-chart-1781273110232-4be3f2z3l-slideshow *, #fv-chart-1781273110232-4be3f2z3l-slideshow *:before, #fv-chart-1781273110232-4be3f2z3l-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper, #fv-chart-1781273110232-4be3f2z3l-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-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; }}#fv-chart-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-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;}#fv-chart-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-row,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-label,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-06-12T14:05:10.232Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Software","Barebones, and full of head-scratching moments","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Software – Software","value": 2,"unitText": "","maxValue": 5}]}]</script><div id="fv-chart-1781273110232-4be3f2z3l-slideshow" class="fv-slideshow-container" data-slide-count="1" data-iframe-height="true"><div class="fv-slides-wrapper"><div class="fv-slide" id="fv-chart-1781273110232-4be3f2z3l-slide-0-wrapper" data-index="0" style="display: block;"><div id="fv-chart-1781273110232-4be3f2z3l-slide-0" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781273110232-4be3f2z3l-slide-0-bar-Software" data-chart-type="Bar" data-title="Barebones, and full of head-scratching moments" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Barebones, and full of head-scratching moments</h4><div class="fv-bar-row" title="Software - Barebones, and full of head-scratching moments: 2 "><div class="fv-bar-label fv-primary-product">Software</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div><table class="sr-only"><caption>Barebones, and full of head-scratching moments Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Software</td><td>2</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div></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() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (true) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var currentSlideIndex = 0;var slides = slideshowContainer.querySelectorAll('.fv-slide');var counter = slideshowContainer.querySelector('.fv-slide-counter');var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev');var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next');var dropdown = slideshowContainer.querySelector('.fv-slideshow-select');function updateControls(index) {if (counter) counter.textContent = (index + 1) + ' / ' + slides.length;if (dropdown) dropdown.value = index;if (prevBtn) {if (index === 0) prevBtn.classList.add('disabled');else prevBtn.classList.remove('disabled');}if (nextBtn) {if (index === slides.length - 1) nextBtn.classList.add('disabled');else nextBtn.classList.remove('disabled');}}function showSlide(index) {if (index < 0) return;if (index >= slides.length) return;currentSlideIndex = index;slides.forEach(function(slide, i) {slide.style.display = i === index ? 'block' : 'none';if (i === index) {var chartEl = slide.querySelector('.fv-chart-wrapper');if (chartEl && window.fvAnimateCharts) {window.fvAnimateCharts(chartEl);}}});updateControls(currentSlideIndex);}if (prevBtn) {prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); });}if (nextBtn) {nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); });}if (dropdown) {dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); });}updateControls(currentSlideIndex);if (slides.length > 0) {var firstChart = slides[0].querySelector('.fv-chart-wrapper');if (firstChart && window.fvAnimateCharts) {setTimeout(function() { window.fvAnimateCharts(firstChart); }, 100);}}}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781273110232-4be3f2z3l', true); });} else {initialize('fv-chart-1781273110232-4be3f2z3l', true);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-value"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Sge4mdpRfuCqPoyfVhLVoa" name="20260612_153913" alt="A ProtoArc EM25 ergonomic mouse on top of a graphics card, in front of various sci-fi novels" src="https://cdn.mos.cms.futurecdn.net/Sge4mdpRfuCqPoyfVhLVoa-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I really want to like the ProtoArc EM25, honestly I do. I've used lots of 'Amazon special' gaming mice and ergo mice over the years, particularly as I enjoy a quiet mouse for sociable gaming, and there aren't too many big brand options. </p><p>You know all those $20-$30 "silent mouse" options in the listings from manufacturers you've never heard of? I've tried a lot of them. My drawers are absolutely full of the not-so-squeaky squeakers, alongside the many high-end, mid-range, and budget gaming mice I've tested at PC Gamer.</p><p>Honestly? I'd take almost any of them over the EM25. It might be cheap, but it really hasn't made me cheerful. And while I appreciate the effort that's been taken to make an MX Master competitor for a more reasonable price point, the end result is something I've found very disappointing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SeN8eY5NaBbxHSHSiA3Ch8" name="20260611_142305" alt="A ProtoArc EM25 ergonomic mouse next to a Logitech MX Master 4" src="https://cdn.mos.cms.futurecdn.net/SeN8eY5NaBbxHSHSiA3Ch8-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's got the MX Master's rough shape and feature set—but in terms of value, I really think you'd be better off looking elsewhere. The sensor is fine, the main button switches are decent, and it looks good on your desk. But I could say the same of many other ultra-budget mice that are even cheaper than this one. </p><p>The question I'd be asking myself, if I was considering one of these, is whether I really need those trick scroll wheels in combination with the quiet switches and an ergo shape. If yes, then it's the Logitech MX Master offerings for you. </p><p>If you just need a cheap, comfortable-yet-not-ergo mouse, though, how about the <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a>? Or this <a href="https://www.amazon.com/INPHIC-A9-Explorer-Wireless-Bluetooth/dp/B0F1D7P51F/" target="_blank">Inphic cheapo-beepo unit</a> I've been messing around with recently. It's $20, it's got a thumb rest, quiet switches, and a single scroll wheel that's perfectly acceptable. Or, if you've decided to save some more pennies and want an ergo mouse that's a bit <em>different </em>(yet still cheaper than the Masters)<em>, </em>what about the weird and wonderful <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-m5-review/" target="_blank">Keychron M5</a>?</p><p>Overall, it's very difficult to recommend the ProtoArc EM25, unless you <em>must </em>have an MX Master-alike for around $50. Even then, I'd say saving your cash for the real thing is a much better bet.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781273172500-27jd7p1yx *, #fv-chart-1781273172500-27jd7p1yx *:before, #fv-chart-1781273172500-27jd7p1yx *:after, #fv-chart-1781273172500-27jd7p1yx-slideshow *, #fv-chart-1781273172500-27jd7p1yx-slideshow *:before, #fv-chart-1781273172500-27jd7p1yx-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781273172500-27jd7p1yx, #fv-chart-1781273172500-27jd7p1yx-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781273172500-27jd7p1yx {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781273172500-27jd7p1yx.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-1781273172500-27jd7p1yx .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781273172500-27jd7p1yx-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781273172500-27jd7p1yx-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx-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; }}#fv-chart-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781273172500-27jd7p1yx-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-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;}#fv-chart-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781273172500-27jd7p1yx .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781273172500-27jd7p1yx .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781273172500-27jd7p1yx .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-row, #fv-chart-1781273172500-27jd7p1yx .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781273172500-27jd7p1yx .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781273172500-27jd7p1yx .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781273172500-27jd7p1yx .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781273172500-27jd7p1yx .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781273172500-27jd7p1yx .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781273172500-27jd7p1yx .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781273172500-27jd7p1yx .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-pie-container,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-bar-row,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stacked-product,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-grouped-bar-product,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-row,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stacked-product,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781273172500-27jd7p1yx.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-1781273172500-27jd7p1yx.mobile-view .fv-bar-label,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-grouped-product-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-label,#fv-chart-1781273172500-27jd7p1yx.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-1781273172500-27jd7p1yx.mobile-view .fv-bar-container,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-bar-cluster,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-container,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-x-axis-wrapper,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-x-axis-label-space,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-x-axis-chart-space,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-benchmark-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-dropdown-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-carousel-nav-btn,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-chart-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-chart-subhead,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-header,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-wrapper,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-vs,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-container,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273172500-27jd7p1yx.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781273172500-27jd7p1yx .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273172500-27jd7p1yx .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-bar-row,#fv-chart-1781273172500-27jd7p1yx .fv-stacked-product,#fv-chart-1781273172500-27jd7p1yx .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-label,#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-container,#fv-chart-1781273172500-27jd7p1yx .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-logo,#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273172500-27jd7p1yx.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-06-12T14:06:12.500Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Value","Cheap, but that only counts for so much","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Value – Value","value": 2,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781273172500-27jd7p1yx" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781273172500-27jd7p1yx-bar-Value" data-chart-type="Bar" data-title="Cheap, but that only counts for so much" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Cheap, but that only counts for so much</h4><div class="fv-bar-row" title="Value - Cheap, but that only counts for so much: 2 "><div class="fv-bar-label fv-primary-product">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div><table class="sr-only"><caption>Cheap, but that only counts for so much Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Value</td><td>2</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781273172500-27jd7p1yx', false); });} else {initialize('fv-chart-1781273172500-27jd7p1yx', false);}})();</script></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/protoarc-em25-ergonomic-mouse-review/</link>
                                                                            <description>
                            <![CDATA[ Rough around the edges. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PnfkWCANTGjwi9CK2iZQBN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ZwZJejJtPeZcajbcwMNWfX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 12 Jun 2026 16:31:51 +0000</pubDate>                                                                                                                                <updated>Fri, 12 Jun 2026 16:32:13 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ZwZJejJtPeZcajbcwMNWfX-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A ProtoArc EM25 ergonomic wireless mouse on a wooden desk, in front of some brightly-coloured post-it notes]]></media:description>                                                            <media:text><![CDATA[A ProtoArc EM25 ergonomic wireless mouse on a wooden desk, in front of some brightly-coloured post-it notes]]></media:text>
                                <media:title type="plain"><![CDATA[A ProtoArc EM25 ergonomic wireless mouse on a wooden desk, in front of some brightly-coloured post-it notes]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ZwZJejJtPeZcajbcwMNWfX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're looking for an ergonomic PC mouse, you're probably already considering the Logitech MX Master 3S, or the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-mx-master-4-review/" target="_blank">Logitech MX Master 4</a>. I've used both as my main productivity meeces for extended periods of time, and can tell you that either make for excellent picks. But, if they're a little pricey for your liking, ProtoArc has made an ergo mouse with many similar design features for much, much less.<br><br>The result is the ProtoArc EM25, a wireless ergonomic mouse that knows what it's about. Right from the off, it screams "budget MX Master" from the nearest rooftop. It's got a similar chassis shape, an extended thumb rest, two scroll wheels (one with a clutch, no less), quiet main switches—the whole kit and kaboodle. The problem is, at every turn, this mouse reminds you of why the Logi mice are brilliant, and why this one doesn't meet the mark.<br><br>It's got all the right features on paper, but most of them prove to be a disappointment in practice. It's also got some odd material choices, some strange-feeling mechanisms, and an overall lack of refinement. Dancing around this mouse's various controls over the past few weeks has caused me to pull a vast array of facial expressions, and none of them have been a smile. Almost every control here feels slightly wrong, in a plethora of different ways.<br><br>There's a certain solidity to the chassis design that makes the EM25 verge towards consideration—especially given its very reasonable <a href="https://www.protoarc.com/products/em25-fast-scroll-ergonomic-mouse" target="_blank">$50</a>/<a href="https://www.amazon.co.uk/ProtoArc-EM25-Ergonomic-Customizable-Rechargeable-Black/dp/B0G5ZH7N5L/" target="_blank">£29</a> price tag. However, unless you're absolutely desperate for an MX Master-a-like for less, I can think of lots of less-ergo, but much better standard mice for your money.</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 absolutely desperate for an MX Master-alike, but can't afford one: </strong>If you simply must have something with the rough shape and quiet clicks of Logitech's finest, but lack the cash, then perhaps the EM25 has something to offer. I'd still save up for the real thing, though.</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 want pleasant controls: </strong>The ProtoArc mouse's various buttons and wheels are all present, but far from correct. The main switches are actually pretty good, but the other controls are all varying kinds of wrong.<br><br>❌ <strong>You want a smooth ride: </strong>The EM25's biggest issue is the skates underneath, which feel like they could do with a good sanding down.</p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781271554779-1t0wx7lkx *, #fv-chart-1781271554779-1t0wx7lkx *:before, #fv-chart-1781271554779-1t0wx7lkx *:after, #fv-chart-1781271554779-1t0wx7lkx-slideshow *, #fv-chart-1781271554779-1t0wx7lkx-slideshow *:before, #fv-chart-1781271554779-1t0wx7lkx-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781271554779-1t0wx7lkx, #fv-chart-1781271554779-1t0wx7lkx-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781271554779-1t0wx7lkx {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781271554779-1t0wx7lkx.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-1781271554779-1t0wx7lkx .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781271554779-1t0wx7lkx-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781271554779-1t0wx7lkx-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx-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; }}#fv-chart-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781271554779-1t0wx7lkx-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-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;}#fv-chart-1781271554779-1t0wx7lkx-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-1781271554779-1t0wx7lkx-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781271554779-1t0wx7lkx .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-row, #fv-chart-1781271554779-1t0wx7lkx .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781271554779-1t0wx7lkx .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-pie-container,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-bar-row,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stacked-product,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-grouped-bar-product,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-row,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stacked-product,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781271554779-1t0wx7lkx.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-1781271554779-1t0wx7lkx.mobile-view .fv-bar-label,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-grouped-product-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-label,#fv-chart-1781271554779-1t0wx7lkx.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-1781271554779-1t0wx7lkx.mobile-view .fv-bar-container,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-bar-cluster,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-container,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-x-axis-wrapper,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-x-axis-label-space,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-x-axis-chart-space,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-benchmark-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-dropdown-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-carousel-nav-btn,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-chart-title,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-chart-subhead,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-header,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-wrapper,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-vs,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select-container,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-versus-select,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781271554779-1t0wx7lkx.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781271554779-1t0wx7lkx.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781271554779-1t0wx7lkx .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-bar-row,#fv-chart-1781271554779-1t0wx7lkx .fv-stacked-product,#fv-chart-1781271554779-1t0wx7lkx .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-label,#fv-chart-1781271554779-1t0wx7lkx .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-1781271554779-1t0wx7lkx .fv-bar-container,#fv-chart-1781271554779-1t0wx7lkx .fv-bar-cluster {width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-label-space {display: none !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-logo,#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781271554779-1t0wx7lkx .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781271554779-1t0wx7lkx.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-06-12T13:39:14.779Z","citation": "We scored the ProtoArc EM25 out of five in six distinct categories.","keywords": ["ProtoArc EM25 gaming mouse","Features","Ergonomics","Performance","Aesthetics","Software","Value","Group 1","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Features","value": 3.5,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Ergonomics","value": 1,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Performance","value": 2.5,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Aesthetics","value": 4,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Software","value": 2,"unitText": "","maxValue": 5},{"@type": "PropertyValue","name": "ProtoArc EM25 gaming mouse – Value","value": 2,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781271554779-1t0wx7lkx" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781271554779-1t0wx7lkx-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="We scored the ProtoArc EM25 out of five in six distinct categories." 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="ProtoArc EM25 gaming mouse - Features: 3.5 "><div class="fv-bar-label">Features</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 70%; background-color: #E33235;" data-target-width="70" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3.5</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Ergonomics: 1 "><div class="fv-bar-label">Ergonomics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 20%; background-color: #E33235;" data-target-width="20" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Performance: 2.5 "><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #E33235;" data-target-width="50" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2.5</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Aesthetics: 4 "><div class="fv-bar-label">Aesthetics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E33235;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Software: 2 "><div class="fv-bar-label">Software</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div><div class="fv-bar-row" title="ProtoArc EM25 gaming mouse - Value: 2 "><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Features ()</th><th>Ergonomics ()</th><th>Performance ()</th><th>Aesthetics ()</th><th>Software ()</th><th>Value ()</th></tr></thead><tbody><tr><td>ProtoArc EM25 gaming mouse</td><td>3.5</td><td>1</td><td>2.5</td><td>4</td><td>2</td><td>2</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">We scored the ProtoArc EM25 out of five in six distinct categories.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781271554779-1t0wx7lkx', false); });} else {initialize('fv-chart-1781271554779-1t0wx7lkx', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-features"><span>ProtoArc EM25 features</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>ProtoArc EM25</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Ergonomic mouse</p></td></tr><tr><td class="firstcol " ><p><strong>Max polling rate</strong></p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Max DPI</strong></p></td><td  ><p>8,000</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>500 mAh</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>90 g</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz wireless, Bluetooth</p></td></tr><tr><td class="firstcol " ><p><strong>Buttons and controls</strong></p></td><td  ><p>Six programmable buttons, two scroll wheels (one horizontal), clutch system, quiet main switches</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.protoarc.com/products/em25-fast-scroll-ergonomic-mouse" target="_blank">$50</a>/<a href="https://www.amazon.co.uk/ProtoArc-EM25-Ergonomic-Customizable-Rechargeable-Black/dp/B0G5ZH7N5L/" target="_blank">£29</a></p></td></tr></tbody></table></div><p>The ProtoArc EM25 is an ergonomically-shaped mouse with a clutch-controlled main scroll wheel, a horizontal side scroll wheel, and an enlarged thumbrest on the left hand side, à la the Logitech MX Master 3S/4. It's also got twin forward and back buttons, and a small button mounted on the front left corner for switching between its Bluetooth and regular 2.4 GHz connections, the latter of which makes use of a small (some would say, nano-sized) dongle.</p><p>Said dongle can be retrieved from the bottom of the mouse via a magnetically-sealed hatch compartment, which is a nice touch. The polling rate is switchable, topping out at 1,000 Hz.</p><p>The sensor is an 8000 DPI max optical unit, while the battery is a 500 mAh internal rechargeable model. ProtoArc doesn't list the battery life in among the specs, but I've only had to charge my review sample once (straight from the box) over several weeks of on and off testing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XisxVuwP3Dnbpz2y7mQV2n-1920-80.jpg" alt="A ProtoArc EM25 ergonomic mouse on a wooden desk, in front of a mouse pad" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bkLE7ZTRJuzyDGnv4bsmNf-1920-80.jpg" alt="A ProtoArc EM25 ergonomic mouse in front of a Logitech MX Master 4 on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tAAEvUkGfxWRLUrYNorfz5-1920-80.jpg" alt="A Logitech MX Master 4 and a ProtoArc EM25 ergo mouse side by side on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mCbF6agvHSftsTC2HEKs8C-1920-80.jpg" alt="A ProtoArc EM25 turned upside down, showing the magnetic hatch underneath" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Software comes in the form of a web app rather than an installed application, which I'll be going into a bit later. And, again like the MX Master 3S and 4S, it's got quiet click switches underneath the main left and right buttons, for your serene, productivity-clicking needs. </p><p>The weight isn't listed on the product page, but some searching around suggests it's about 90 grams. What I will say is that the EM25 is light enough to give my scales trouble measuring it, and it feels significantly less porky than the 150g MX Master 4. </p><p>Still, it's definitely built for productivity purposes—those looking for something fast and genuinely light would be better off elsewhere.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781272372918-zriix39lm *, #fv-chart-1781272372918-zriix39lm *:before, #fv-chart-1781272372918-zriix39lm *:after, #fv-chart-1781272372918-zriix39lm-slideshow *, #fv-chart-1781272372918-zriix39lm-slideshow *:before, #fv-chart-1781272372918-zriix39lm-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781272372918-zriix39lm, #fv-chart-1781272372918-zriix39lm-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781272372918-zriix39lm {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781272372918-zriix39lm.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781272372918-zriix39lm.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-1781272372918-zriix39lm .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781272372918-zriix39lm-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781272372918-zriix39lm-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781272372918-zriix39lm-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; }}#fv-chart-1781272372918-zriix39lm-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-1781272372918-zriix39lm-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-1781272372918-zriix39lm-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781272372918-zriix39lm-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781272372918-zriix39lm-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-1781272372918-zriix39lm-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;}#fv-chart-1781272372918-zriix39lm-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-1781272372918-zriix39lm-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781272372918-zriix39lm .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781272372918-zriix39lm .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781272372918-zriix39lm .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781272372918-zriix39lm .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781272372918-zriix39lm .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781272372918-zriix39lm .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272372918-zriix39lm .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272372918-zriix39lm .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781272372918-zriix39lm .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781272372918-zriix39lm .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781272372918-zriix39lm .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781272372918-zriix39lm .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781272372918-zriix39lm .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781272372918-zriix39lm .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781272372918-zriix39lm .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-row, #fv-chart-1781272372918-zriix39lm .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781272372918-zriix39lm .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781272372918-zriix39lm .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781272372918-zriix39lm .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781272372918-zriix39lm .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781272372918-zriix39lm .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781272372918-zriix39lm .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781272372918-zriix39lm .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781272372918-zriix39lm .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781272372918-zriix39lm .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781272372918-zriix39lm .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781272372918-zriix39lm .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-pie-container,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-bar-row,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stacked-product,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-grouped-bar-product,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-row,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stacked-product,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781272372918-zriix39lm.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-1781272372918-zriix39lm.mobile-view .fv-bar-label,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-grouped-product-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-label,#fv-chart-1781272372918-zriix39lm.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-1781272372918-zriix39lm.mobile-view .fv-bar-container,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-bar-cluster,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-container,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-x-axis-wrapper,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-x-axis-label-space,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-x-axis-chart-space,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-benchmark-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-dropdown-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-carousel-nav-btn,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-chart-title,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-chart-subhead,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-header,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-wrapper,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-vs,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select-container,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-versus-select,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781272372918-zriix39lm.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272372918-zriix39lm.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272372918-zriix39lm.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781272372918-zriix39lm .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272372918-zriix39lm .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-bar-row,#fv-chart-1781272372918-zriix39lm .fv-stacked-product,#fv-chart-1781272372918-zriix39lm .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-label,#fv-chart-1781272372918-zriix39lm .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-1781272372918-zriix39lm .fv-bar-container,#fv-chart-1781272372918-zriix39lm .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272372918-zriix39lm .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272372918-zriix39lm .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272372918-zriix39lm .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-logo,#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272372918-zriix39lm .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272372918-zriix39lm .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272372918-zriix39lm.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-06-12T13:52:52.918Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Features","Plenty of control options","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Features – Plenty of control options","value": 3.5,"unitText": ""}]}</script><div id="fv-chart-1781272372918-zriix39lm" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781272372918-zriix39lm-bar-Plenty of control options" data-chart-type="Bar" data-title="Plenty of control options" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Plenty of control options</h4><div class="fv-bar-row" title="Features - Plenty of control options: 3.5 "><div class="fv-bar-label fv-primary-product">Features</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 87.5%; background-color: #E33235;" data-target-width="87.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3.5</span></div></div></div></div><table class="sr-only"><caption>Plenty of control options Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Features</td><td>3.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781272372918-zriix39lm', false); });} else {initialize('fv-chart-1781272372918-zriix39lm', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-ergonomics"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zUWXg2Xszg3m56HECXVpfG" name="20260611_142145" alt="A close up of the scroll wheel of the ProtoArc EM25 ergonomic mouse" src="https://cdn.mos.cms.futurecdn.net/zUWXg2Xszg3m56HECXVpfG-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Testing out all of the buttons, wheels, and ergonomic features of the ProtoArc EM25 is something of an adventure, and that's because almost all of them, in some form or fashion, feel a bit… wrong. I'm going to need to go through them individually here, because each is worthy of note.</p><p>Let's start off with the good. The two main switches underneath the left and right buttons feel very positive. They're quiet, too, while still providing plenty of clicky feedback. You can tell most of the money went into these two switch units, and that's a sensible place to put it. They're the ones you'll be interacting with most, after all.</p><p>Then there are the traditional forward and back thumb buttons on the left hand side. These are hollow-feeling, bendy, and springy in all the wrong ways. Still, there's a positive click underneath them, and I'm sure you'd stop noticing their drawbacks over time.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/RPmApYxh44sQXRXhbjvRgN-1920-80.jpg" alt="The top clutch button of the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mApEapydJbtd3ieCo3tsST-1920-80.jpg" alt="The side buttons and connection-switching button of the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VCbMdBc8FGZpBY96uiHTpX-1920-80.jpg" alt="The side scroll wheel of the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>My true ire, however, begins with the big orange clutch button behind the main scrollwheel. It's got an astonishingly long travel, a surprising amount of springy resistance, and seems to engage and disengage the scrollwheel clutch at differing points, <em>somewhere </em>along the way. </p><p>There's a physical mechanism working behind the scenes to switch the scroll wheel from free scroll into a more clicky affair, unlike Logitech's magnetic solution, and the difference is pretty stark. Which brings me on to the main wheel itself.</p><p>In free scroll mode, it feels disconcertingly light. So much so that it can be quite difficult to control, and the wheel moves from side-to-side in its housing more than I'd like. In ratcheted mode, it feels slightly graunchy and overly-loud, although fairly positive. The middle click, though, takes far too much force to activate, and results in the wheel inadvertently moving as you press down on 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4PDFZxCnKUjq4MmdVhe3pf" name="20260611_142223" alt="The underside of a ProtoArc EM25 ergonomic mouse" src="https://cdn.mos.cms.futurecdn.net/4PDFZxCnKUjq4MmdVhe3pf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Despite all this, my biggest critique has to be left for the skates on the underside. They look acceptable in person, and feel fine when you run a finger over them. But, no matter the mouse pad, it feels like there's a raised edge somewhere that should have been sanded down. </p><p>I can actually hear (and feel) this mouse scraping against my smooth Corsair pad as I move. I'll be honest, that's a new one on me. And I've tested lots and lots of budget mice over the years. Unmute the video below and turn your sound up for an example:</p><iframe src="https://content.jwplatform.com/players/Z0Jfptu0.html" id="Z0Jfptu0" title="ProtoArc EM25 Mouse Pad Testing" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Shape-wise? It's actually quite nice to palm, and perfectly fine for fingertip usage, too. I'm not  convinced by the satin-style finish, though, which is a bit tacky. And by that, I mean literally. Tacky, as in it tacks against your skin. Eesh.</p><p>Oh, and there's a side scroll wheel as well, which is somehow totally different-feeling and yet similar to the main scroll wheel itself. It's… fine. A little loose, a little hollow-feeling, a little tinny. But fine. Mercy me.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781272882166-zkppseiq4 *, #fv-chart-1781272882166-zkppseiq4 *:before, #fv-chart-1781272882166-zkppseiq4 *:after, #fv-chart-1781272882166-zkppseiq4-slideshow *, #fv-chart-1781272882166-zkppseiq4-slideshow *:before, #fv-chart-1781272882166-zkppseiq4-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781272882166-zkppseiq4, #fv-chart-1781272882166-zkppseiq4-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781272882166-zkppseiq4 {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781272882166-zkppseiq4.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781272882166-zkppseiq4.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-1781272882166-zkppseiq4 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781272882166-zkppseiq4-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781272882166-zkppseiq4-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781272882166-zkppseiq4-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; }}#fv-chart-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781272882166-zkppseiq4-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-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;}#fv-chart-1781272882166-zkppseiq4-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-1781272882166-zkppseiq4-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781272882166-zkppseiq4 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781272882166-zkppseiq4 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781272882166-zkppseiq4 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781272882166-zkppseiq4 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-row, #fv-chart-1781272882166-zkppseiq4 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781272882166-zkppseiq4 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781272882166-zkppseiq4 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781272882166-zkppseiq4 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781272882166-zkppseiq4 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781272882166-zkppseiq4 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781272882166-zkppseiq4 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781272882166-zkppseiq4 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-pie-container,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-bar-row,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stacked-product,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-grouped-bar-product,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-row,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stacked-product,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781272882166-zkppseiq4.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-1781272882166-zkppseiq4.mobile-view .fv-bar-label,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-grouped-product-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-label,#fv-chart-1781272882166-zkppseiq4.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-1781272882166-zkppseiq4.mobile-view .fv-bar-container,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-bar-cluster,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-container,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-x-axis-wrapper,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-x-axis-label-space,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-x-axis-chart-space,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-benchmark-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-dropdown-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-carousel-nav-btn,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-chart-title,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-chart-subhead,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-header,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-wrapper,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-vs,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select-container,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-versus-select,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781272882166-zkppseiq4.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272882166-zkppseiq4.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272882166-zkppseiq4.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781272882166-zkppseiq4 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272882166-zkppseiq4 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-bar-row,#fv-chart-1781272882166-zkppseiq4 .fv-stacked-product,#fv-chart-1781272882166-zkppseiq4 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-label,#fv-chart-1781272882166-zkppseiq4 .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-1781272882166-zkppseiq4 .fv-bar-container,#fv-chart-1781272882166-zkppseiq4 .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272882166-zkppseiq4 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-logo,#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272882166-zkppseiq4 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272882166-zkppseiq4 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272882166-zkppseiq4.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-06-12T14:01:22.166Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Ergonomics","The main switches are fine, but as for the rest? Nope.","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Ergonomics – Ergonomics","value": 1,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781272882166-zkppseiq4" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781272882166-zkppseiq4-bar-Ergonomics" data-chart-type="Bar" data-title="The main switches are fine, but as for the rest? Nope." data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">The main switches are fine, but as for the rest? Nope.</h4><div class="fv-bar-row" title="Ergonomics - The main switches are fine, but as for the rest? Nope.: 1 "><div class="fv-bar-label fv-primary-product">Ergonomics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 20%; background-color: #E33235;" data-target-width="20" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1</span></div></div></div></div><table class="sr-only"><caption>The main switches are fine, but as for the rest? Nope. Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Ergonomics</td><td>1</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781272882166-zkppseiq4', false); });} else {initialize('fv-chart-1781272882166-zkppseiq4', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-performance"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jh8CFChsFx5Z9jMBizHjc" name="20260611_142328" alt="A ProtoArc EM25 ergonomic mouse facing a Logitech MX Master 4 in front of a gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/jh8CFChsFx5Z9jMBizHjc-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At no point does ProtoArc advertise the EM25 as a gaming mouse, and given its specs, I don't think many will be buying it for such a purpose. </p><p>However, I game with the Logitech MX Master 4 all the time, as it's perfectly reasonable to use for several thousand turns of Civ 7, or a slower-paced, singleplayer shooter. So, I thought I'd try out the EM25 for the same purpose. And you know what? It's also fine.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8KBgqaWWMcxzUYTfVJfiJD-1920-80.png" alt="A velocity vs time chart for the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uMQr4Xh65qxovjoBpn6PMD-1920-80.png" alt="An X count vs time chart for the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">MouseTester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iQ2Pit4JFp3Y96Yjuw43LD-1920-80.png" alt="An interval vs time chart for the ProtoArc EM25 ergonomic mouse" /><figcaption><small role="credit">MouseTester</small></figcaption></figure></figure><p>However, the MouseTester charts above show some odd inconsistencies in the polling rate, although I can't say I noticed the mouse feeling particularly laggy or inconsistent in practice. It's not super-accurate or particularly fast to respond, but it's decent enough to get by. Can you do some light gaming with an EM25? Yes. Should you? Probably not.</p><p>For day to day usage, the sensor feels smooth and reasonably accurate, and I've had no dropout issues with either the 2.4 GHz or the Bluetooth connection. In terms of the internal, movement-tracking components, this mouse delivers acceptable performance for a pure productivity squeaker. In terms of the experience of actually using it, see all the ergonomic issues above.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781272956410-jr1d4t153 *, #fv-chart-1781272956410-jr1d4t153 *:before, #fv-chart-1781272956410-jr1d4t153 *:after, #fv-chart-1781272956410-jr1d4t153-slideshow *, #fv-chart-1781272956410-jr1d4t153-slideshow *:before, #fv-chart-1781272956410-jr1d4t153-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781272956410-jr1d4t153, #fv-chart-1781272956410-jr1d4t153-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781272956410-jr1d4t153 {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781272956410-jr1d4t153.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781272956410-jr1d4t153.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-1781272956410-jr1d4t153 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781272956410-jr1d4t153-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781272956410-jr1d4t153-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781272956410-jr1d4t153-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; }}#fv-chart-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781272956410-jr1d4t153-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-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;}#fv-chart-1781272956410-jr1d4t153-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-1781272956410-jr1d4t153-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781272956410-jr1d4t153 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781272956410-jr1d4t153 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781272956410-jr1d4t153 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781272956410-jr1d4t153 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-row, #fv-chart-1781272956410-jr1d4t153 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781272956410-jr1d4t153 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781272956410-jr1d4t153 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781272956410-jr1d4t153 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781272956410-jr1d4t153 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781272956410-jr1d4t153 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781272956410-jr1d4t153 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781272956410-jr1d4t153 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-pie-container,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-bar-row,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stacked-product,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-grouped-bar-product,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-row,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stacked-product,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781272956410-jr1d4t153.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-1781272956410-jr1d4t153.mobile-view .fv-bar-label,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-grouped-product-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-label,#fv-chart-1781272956410-jr1d4t153.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-1781272956410-jr1d4t153.mobile-view .fv-bar-container,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-bar-cluster,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-container,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-x-axis-wrapper,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-x-axis-label-space,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-x-axis-chart-space,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-benchmark-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-dropdown-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-carousel-nav-btn,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-chart-title,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-chart-subhead,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-header,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-wrapper,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-vs,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select-container,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-versus-select,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781272956410-jr1d4t153.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272956410-jr1d4t153.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272956410-jr1d4t153.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781272956410-jr1d4t153 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781272956410-jr1d4t153 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-bar-row,#fv-chart-1781272956410-jr1d4t153 .fv-stacked-product,#fv-chart-1781272956410-jr1d4t153 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-label,#fv-chart-1781272956410-jr1d4t153 .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-1781272956410-jr1d4t153 .fv-bar-container,#fv-chart-1781272956410-jr1d4t153 .fv-bar-cluster {width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-label-space {display: none !important;}#fv-chart-1781272956410-jr1d4t153 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-logo,#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781272956410-jr1d4t153 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781272956410-jr1d4t153 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781272956410-jr1d4t153.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-06-12T14:02:36.410Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Performance","Acceptable, for an ergo mouse","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Performance – Performance","value": 2.5,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781272956410-jr1d4t153" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781272956410-jr1d4t153-bar-Performance" data-chart-type="Bar" data-title="Acceptable, for an ergo mouse" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Acceptable, for an ergo mouse</h4><div class="fv-bar-row" title="Performance - Acceptable, for an ergo mouse: 2.5 "><div class="fv-bar-label fv-primary-product">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #E33235;" data-target-width="50" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2.5</span></div></div></div></div><table class="sr-only"><caption>Acceptable, for an ergo mouse Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Performance</td><td>2.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781272956410-jr1d4t153', false); });} else {initialize('fv-chart-1781272956410-jr1d4t153', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-aesthetics"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DT2vrUgjz4afUqP58KRkfa" name="20260612_152450" alt="A ProtoArc EM25 ergonomic mouse looking handsome" src="https://cdn.mos.cms.futurecdn.net/DT2vrUgjz4afUqP58KRkfa-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Despite the drawbacks of the satin finish in terms of hand-feel, the coating actually looks pretty great in photos, and in person, too. I also like how the EM25 is highly reminiscent of Logitech's offerings, while having a neater, tidier design of its own.</p><p>The orange button sticking out of the top also adds a nice splash of colour to the black-and-chrome aesthetic. It's a mouse that looks good on your desk, that's for sure. I just wish it felt anywhere near as good when I put my hands on it.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781273029174-l1rscniv3 *, #fv-chart-1781273029174-l1rscniv3 *:before, #fv-chart-1781273029174-l1rscniv3 *:after, #fv-chart-1781273029174-l1rscniv3-slideshow *, #fv-chart-1781273029174-l1rscniv3-slideshow *:before, #fv-chart-1781273029174-l1rscniv3-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781273029174-l1rscniv3, #fv-chart-1781273029174-l1rscniv3-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781273029174-l1rscniv3 {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781273029174-l1rscniv3.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781273029174-l1rscniv3.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-1781273029174-l1rscniv3 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781273029174-l1rscniv3-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781273029174-l1rscniv3-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781273029174-l1rscniv3-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; }}#fv-chart-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781273029174-l1rscniv3-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-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;}#fv-chart-1781273029174-l1rscniv3-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-1781273029174-l1rscniv3-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781273029174-l1rscniv3 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781273029174-l1rscniv3 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781273029174-l1rscniv3 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781273029174-l1rscniv3 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-row, #fv-chart-1781273029174-l1rscniv3 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781273029174-l1rscniv3 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781273029174-l1rscniv3 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781273029174-l1rscniv3 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781273029174-l1rscniv3 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781273029174-l1rscniv3 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781273029174-l1rscniv3 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781273029174-l1rscniv3 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-pie-container,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-bar-row,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stacked-product,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-grouped-bar-product,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-row,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stacked-product,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781273029174-l1rscniv3.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-1781273029174-l1rscniv3.mobile-view .fv-bar-label,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-grouped-product-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-label,#fv-chart-1781273029174-l1rscniv3.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-1781273029174-l1rscniv3.mobile-view .fv-bar-container,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-bar-cluster,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-container,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-x-axis-wrapper,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-x-axis-label-space,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-x-axis-chart-space,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-benchmark-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-dropdown-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-carousel-nav-btn,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-chart-title,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-chart-subhead,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-header,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-wrapper,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-vs,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select-container,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-versus-select,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781273029174-l1rscniv3.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273029174-l1rscniv3.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273029174-l1rscniv3.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781273029174-l1rscniv3 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273029174-l1rscniv3 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-bar-row,#fv-chart-1781273029174-l1rscniv3 .fv-stacked-product,#fv-chart-1781273029174-l1rscniv3 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-label,#fv-chart-1781273029174-l1rscniv3 .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-1781273029174-l1rscniv3 .fv-bar-container,#fv-chart-1781273029174-l1rscniv3 .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273029174-l1rscniv3 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-logo,#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273029174-l1rscniv3 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273029174-l1rscniv3 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273029174-l1rscniv3.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-06-12T14:03:49.175Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Aesthetics","Quite the looker, it must be said","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Aesthetics – Quite the looker, it must be said","value": 4,"unitText": ""}]}</script><div id="fv-chart-1781273029174-l1rscniv3" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781273029174-l1rscniv3-bar-Quite the looker, it must be said" data-chart-type="Bar" data-title="Quite the looker, it must be said" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Quite the looker, it must be said</h4><div class="fv-bar-row" title="Aesthetics - Quite the looker, it must be said: 4 "><div class="fv-bar-label fv-primary-product">Aesthetics</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E33235;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><table class="sr-only"><caption>Quite the looker, it must be said Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Aesthetics</td><td>4</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781273029174-l1rscniv3', false); });} else {initialize('fv-chart-1781273029174-l1rscniv3', false);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-software"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ncrFJisWyUkPruxSFPz4fT" name="20260612_153027" alt="The ProtoArc web software for its EM25 ergonomic mouse" src="https://cdn.mos.cms.futurecdn.net/ncrFJisWyUkPruxSFPz4fT-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ProtoArc)</span></figcaption></figure><p>Your software options here are webpage-based, which, on my Chrome browser, renders all the text in a Times New Roman font. I know that's a small thing to point out, but it doesn't exactly inspire confidence in the design. However, there are plenty of options to reassign button functions, create macros, and tweak the general settings of the mouse. By default, the EM25 sets itself to a 250 Hz polling rate, but it can be upped to the full 1,000 Hz here.</p><p>Despite the functionality, the interface really does feel basic, with some confusingly-labelled features. An "Advanced Controls" tab allows you to switch on "maximum sensor performance" for limited amounts of time, from 10 seconds to half an hour. </p><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="nn4xtq8xaVTZiHWfKNbswn" name="ProtoArcsoftwareNew Project" alt="A screenshot of various settings options in the ProtoArc web software" src="https://cdn.mos.cms.futurecdn.net/nn4xtq8xaVTZiHWfKNbswn-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/nn4xtq8xaVTZiHWfKNbswn-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ProtoArc)</span></figcaption></figure><p>It "runs the sensor at peak performance with high LED brightness" says the menu page, although with a warning of increased power consumption. Fair enough. I've left it off for my testing, as you can only enable it for a 30 minute maximum, and in my opinion, you're bound to forget the option exists. You can also adjust the click debounce time, or activate an Extended Range Mode which supposedly boosts the range from 8-10 meters to 10-12, again, diminishing battery life.</p><p>I tested it, and I couldn't tell the difference in terms of using the mouse from different ranges. Still, it manages to transmit successfully over the whole distance of my large front room with the setting turned off, so hooray for a bit of extra juice.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper *, #fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper *:before, #fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper *:after, #fv-chart-1781273110232-4be3f2z3l-slideshow *, #fv-chart-1781273110232-4be3f2z3l-slideshow *:before, #fv-chart-1781273110232-4be3f2z3l-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper, #fv-chart-1781273110232-4be3f2z3l-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-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; }}#fv-chart-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-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;}#fv-chart-1781273110232-4be3f2z3l-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-1781273110232-4be3f2z3l-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-row,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stacked-product,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-label,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .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-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-container,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo,#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273110232-4be3f2z3l-slideshow .fv-chart-wrapper.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-06-12T14:05:10.232Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Software","Barebones, and full of head-scratching moments","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Software – Software","value": 2,"unitText": "","maxValue": 5}]}]</script><div id="fv-chart-1781273110232-4be3f2z3l-slideshow" class="fv-slideshow-container" data-slide-count="1" data-iframe-height="true"><div class="fv-slides-wrapper"><div class="fv-slide" id="fv-chart-1781273110232-4be3f2z3l-slide-0-wrapper" data-index="0" style="display: block;"><div id="fv-chart-1781273110232-4be3f2z3l-slide-0" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781273110232-4be3f2z3l-slide-0-bar-Software" data-chart-type="Bar" data-title="Barebones, and full of head-scratching moments" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Barebones, and full of head-scratching moments</h4><div class="fv-bar-row" title="Software - Barebones, and full of head-scratching moments: 2 "><div class="fv-bar-label fv-primary-product">Software</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div><table class="sr-only"><caption>Barebones, and full of head-scratching moments Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Software</td><td>2</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div></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() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (true) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var currentSlideIndex = 0;var slides = slideshowContainer.querySelectorAll('.fv-slide');var counter = slideshowContainer.querySelector('.fv-slide-counter');var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev');var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next');var dropdown = slideshowContainer.querySelector('.fv-slideshow-select');function updateControls(index) {if (counter) counter.textContent = (index + 1) + ' / ' + slides.length;if (dropdown) dropdown.value = index;if (prevBtn) {if (index === 0) prevBtn.classList.add('disabled');else prevBtn.classList.remove('disabled');}if (nextBtn) {if (index === slides.length - 1) nextBtn.classList.add('disabled');else nextBtn.classList.remove('disabled');}}function showSlide(index) {if (index < 0) return;if (index >= slides.length) return;currentSlideIndex = index;slides.forEach(function(slide, i) {slide.style.display = i === index ? 'block' : 'none';if (i === index) {var chartEl = slide.querySelector('.fv-chart-wrapper');if (chartEl && window.fvAnimateCharts) {window.fvAnimateCharts(chartEl);}}});updateControls(currentSlideIndex);}if (prevBtn) {prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); });}if (nextBtn) {nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); });}if (dropdown) {dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); });}updateControls(currentSlideIndex);if (slides.length > 0) {var firstChart = slides[0].querySelector('.fv-chart-wrapper');if (firstChart && window.fvAnimateCharts) {setTimeout(function() { window.fvAnimateCharts(firstChart); }, 100);}}}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781273110232-4be3f2z3l', true); });} else {initialize('fv-chart-1781273110232-4be3f2z3l', true);}})();</script></div><h2 class="article-body__section" id="section-protoarc-em25-value"><span>ProtoArc EM25 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Sge4mdpRfuCqPoyfVhLVoa" name="20260612_153913" alt="A ProtoArc EM25 ergonomic mouse on top of a graphics card, in front of various sci-fi novels" src="https://cdn.mos.cms.futurecdn.net/Sge4mdpRfuCqPoyfVhLVoa-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I really want to like the ProtoArc EM25, honestly I do. I've used lots of 'Amazon special' gaming mice and ergo mice over the years, particularly as I enjoy a quiet mouse for sociable gaming, and there aren't too many big brand options. </p><p>You know all those $20-$30 "silent mouse" options in the listings from manufacturers you've never heard of? I've tried a lot of them. My drawers are absolutely full of the not-so-squeaky squeakers, alongside the many high-end, mid-range, and budget gaming mice I've tested at PC Gamer.</p><p>Honestly? I'd take almost any of them over the EM25. It might be cheap, but it really hasn't made me cheerful. And while I appreciate the effort that's been taken to make an MX Master competitor for a more reasonable price point, the end result is something I've found very disappointing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SeN8eY5NaBbxHSHSiA3Ch8" name="20260611_142305" alt="A ProtoArc EM25 ergonomic mouse next to a Logitech MX Master 4" src="https://cdn.mos.cms.futurecdn.net/SeN8eY5NaBbxHSHSiA3Ch8-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's got the MX Master's rough shape and feature set—but in terms of value, I really think you'd be better off looking elsewhere. The sensor is fine, the main button switches are decent, and it looks good on your desk. But I could say the same of many other ultra-budget mice that are even cheaper than this one. </p><p>The question I'd be asking myself, if I was considering one of these, is whether I really need those trick scroll wheels in combination with the quiet switches and an ergo shape. If yes, then it's the Logitech MX Master offerings for you. </p><p>If you just need a cheap, comfortable-yet-not-ergo mouse, though, how about the <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a>? Or this <a href="https://www.amazon.com/INPHIC-A9-Explorer-Wireless-Bluetooth/dp/B0F1D7P51F/" target="_blank">Inphic cheapo-beepo unit</a> I've been messing around with recently. It's $20, it's got a thumb rest, quiet switches, and a single scroll wheel that's perfectly acceptable. Or, if you've decided to save some more pennies and want an ergo mouse that's a bit <em>different </em>(yet still cheaper than the Masters)<em>, </em>what about the weird and wonderful <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-m5-review/" target="_blank">Keychron M5</a>?</p><p>Overall, it's very difficult to recommend the ProtoArc EM25, unless you <em>must </em>have an MX Master-alike for around $50. Even then, I'd say saving your cash for the real thing is a much better bet.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1781273172500-27jd7p1yx *, #fv-chart-1781273172500-27jd7p1yx *:before, #fv-chart-1781273172500-27jd7p1yx *:after, #fv-chart-1781273172500-27jd7p1yx-slideshow *, #fv-chart-1781273172500-27jd7p1yx-slideshow *:before, #fv-chart-1781273172500-27jd7p1yx-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1781273172500-27jd7p1yx, #fv-chart-1781273172500-27jd7p1yx-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1781273172500-27jd7p1yx {position: relative !important; overflow: visible !important;--riv-primary: #E33235;}#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1781273172500-27jd7p1yx.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-1781273172500-27jd7p1yx .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1781273172500-27jd7p1yx-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #E33235;}#fv-chart-1781273172500-27jd7p1yx-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx-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; }}#fv-chart-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1781273172500-27jd7p1yx-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-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;}#fv-chart-1781273172500-27jd7p1yx-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-1781273172500-27jd7p1yx-slideshow .fv-slideshow-select:focus {outline: 2px solid #E33235 !important;border-color: #E33235 !important;}#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1781273172500-27jd7p1yx .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1781273172500-27jd7p1yx .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1781273172500-27jd7p1yx .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1781273172500-27jd7p1yx .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-row, #fv-chart-1781273172500-27jd7p1yx .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1781273172500-27jd7p1yx .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1781273172500-27jd7p1yx .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1781273172500-27jd7p1yx .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1781273172500-27jd7p1yx .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1781273172500-27jd7p1yx .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1781273172500-27jd7p1yx .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1781273172500-27jd7p1yx .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-pie-container,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-bar-row,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stacked-product,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-grouped-bar-product,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-row,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stacked-product,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1781273172500-27jd7p1yx.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-1781273172500-27jd7p1yx.mobile-view .fv-bar-label,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-grouped-product-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-label,#fv-chart-1781273172500-27jd7p1yx.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-1781273172500-27jd7p1yx.mobile-view .fv-bar-container,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-bar-cluster,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-container,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-x-axis-wrapper,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-x-axis-label-space,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-x-axis-chart-space,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-benchmark-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-dropdown-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-carousel-nav-btn,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-chart-title,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-chart-subhead,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-header,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-wrapper,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-vs,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select-container,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-versus-select,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-btn,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-logo,#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-icon,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1781273172500-27jd7p1yx.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273172500-27jd7p1yx.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273172500-27jd7p1yx.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1781273172500-27jd7p1yx .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1781273172500-27jd7p1yx .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-bar-row,#fv-chart-1781273172500-27jd7p1yx .fv-stacked-product,#fv-chart-1781273172500-27jd7p1yx .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-label,#fv-chart-1781273172500-27jd7p1yx .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-1781273172500-27jd7p1yx .fv-bar-container,#fv-chart-1781273172500-27jd7p1yx .fv-bar-cluster {width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-label-space {display: none !important;}#fv-chart-1781273172500-27jd7p1yx .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-chart-title {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-logo,#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1781273172500-27jd7p1yx .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1781273172500-27jd7p1yx .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1781273172500-27jd7p1yx.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-06-12T14:06:12.500Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["ProtoArc EM25 ergonomic mouse","Value","Cheap, but that only counts for so much","benchmark","comparison","performance","review","PC Gamer"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Value – Value","value": 2,"unitText": "","maxValue": 5}]}</script><div id="fv-chart-1781273172500-27jd7p1yx" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1781273172500-27jd7p1yx-bar-Value" data-chart-type="Bar" data-title="Cheap, but that only counts for so much" data-subhead="" data-caption="" data-bar-max-value-override="5" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Cheap, but that only counts for so much</h4><div class="fv-bar-row" title="Value - Cheap, but that only counts for so much: 2 "><div class="fv-bar-label fv-primary-product">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 40%; background-color: #E33235;" data-target-width="40" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2</span></div></div></div></div><table class="sr-only"><caption>Cheap, but that only counts for so much Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Value</td><td>2</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo"></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script><script>(function() {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) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === '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');}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);}});});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);});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}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;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) captionEl.textContent = newCaption || '';if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});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');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1781273172500-27jd7p1yx', false); });} else {initialize('fv-chart-1781273172500-27jd7p1yx', false);}})();</script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This custom fingertip mouse is one of the weirdest I've seen and now you can build one for yourself, though you'll need to sacrifice another mouse first ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I love a strange keyboard, or a weird controller (here's looking at you <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG</a>), but I've discovered I might be a bit more traditional about my gaming mouse preferences, if this DIY fingertip mouse is anything to go on. To be fair, it could be the whole 'spider-like mouse where you can see its internals' thing that's putting me off.</p><p>X user <a href="https://x.com/Pseudoku3/status/2064884562556063790?s=20" target="_blank">Pseudoku</a> recently took to the social media platform to show off their mouse, or as <a href="https://x.com/Everlier/status/2065011452218421503?s=20" target="_blank">one comment argues</a>, spider. Effectively, it's a handful of platforms made out of nylon on top of a traditional mouse's internals, so you can rest your fingers. It doesn't look particularly uncomfortable, but it does seem like resting your palm would be tough, and may jam into a pointy bit. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2064884562556063790"><p lang="en" dir="ltr">Have been happily using mine for over a year and now that the hype is dead, I'm open sourcing it on my GitHub. Made a few adjustments on the model, edited my codes to more human legible form. pic.twitter.com/q6ndQ3SDDd<a href="https://twitter.com/cantworkitout/status/2064884562556063790">June 11, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Luckily for you, if you want to build one for yourself, Psuedoku has shared the mouse on <a href="https://github.com/pseudoku/Kotinos" target="_blank">their GitHub</a>. You can download the STL files to 3D print the shell and paddles yourself, or you can grab the SCAD file and edit it to your proportions. Should you have a particularly big or small hand, it might need some adjusting. </p><p>It even comes with step-by-step instructions on where to place the internals, how to attach the different 3D-printed parts, and where to place the battery at the end. It looks pretty good, despite how weird it is. </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>The downside is that the instruction requires a whole other mouse to get this spider-like one working. Psuedoku disassembled an HSK Pro (presumably the G-Wolves HSK Pro) to get its buttons, battery, and sensor, then attached all the parts to the side, Frankenstein's Monster style. Luckily, it is alive and has a pretty killer sensor too. </p><p>The <a href="https://shop.g-wolves.com/products/g-wolves-hsk-pro-4k" target="_blank">G-Wolves HSK Pro</a> seems to be a very specific choice, because the mouse is comically small. It's effectively just the top half of a gaming mouse, which gives it a 26.8 g weight, despite its 8,000 Hz sensor. That little size presumably makes for a good base because of how centralised its internals are. You have one big clump of components that everything else gets built around.  </p><p>We've tried fingertip keypads before (<a href="https://www.pcgamer.com/azeron-gaming-keypad-for-mmo-fps-gaming-setup/" target="_blank">and really quite liked them</a>), and part of the joy of them is that those fingertip buttons give you access to quick controls. In this case, the standard left and right clicks work, as well as the side buttons, but the other fingertip mounts appear to be purely for you to place your fingers. Whether or not that gets you more precise controls is anyone's guess, and likely highly subjective, but I'm not brave enough to tear apart my mouse to give it a try. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/this-custom-fingertip-mouse-is-one-of-the-weirdest-ive-seen-and-now-you-can-build-one-for-yourself-though-youll-need-to-sacrifice-another-mouse-first/</link>
                                                                            <description>
                            <![CDATA[ There is something fitting about this spider-like mouse devouring a different mouse to function. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qd3b2agRjq5zJfMRHKMi5S</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LDs7sZMEkdr7PnYAmb7SwZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 11 Jun 2026 11:56:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/LDs7sZMEkdr7PnYAmb7SwZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Pseudoku]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Pseudoku&#039;s fingertip mouse]]></media:description>                                                            <media:text><![CDATA[Pseudoku&#039;s fingertip mouse]]></media:text>
                                <media:title type="plain"><![CDATA[Pseudoku&#039;s fingertip mouse]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LDs7sZMEkdr7PnYAmb7SwZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I love a strange keyboard, or a weird controller (here's looking at you <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG</a>), but I've discovered I might be a bit more traditional about my gaming mouse preferences, if this DIY fingertip mouse is anything to go on. To be fair, it could be the whole 'spider-like mouse where you can see its internals' thing that's putting me off.</p><p>X user <a href="https://x.com/Pseudoku3/status/2064884562556063790?s=20" target="_blank">Pseudoku</a> recently took to the social media platform to show off their mouse, or as <a href="https://x.com/Everlier/status/2065011452218421503?s=20" target="_blank">one comment argues</a>, spider. Effectively, it's a handful of platforms made out of nylon on top of a traditional mouse's internals, so you can rest your fingers. It doesn't look particularly uncomfortable, but it does seem like resting your palm would be tough, and may jam into a pointy bit. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2064884562556063790"><p lang="en" dir="ltr">Have been happily using mine for over a year and now that the hype is dead, I'm open sourcing it on my GitHub. Made a few adjustments on the model, edited my codes to more human legible form. pic.twitter.com/q6ndQ3SDDd<a href="https://twitter.com/cantworkitout/status/2064884562556063790">June 11, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Luckily for you, if you want to build one for yourself, Psuedoku has shared the mouse on <a href="https://github.com/pseudoku/Kotinos" target="_blank">their GitHub</a>. You can download the STL files to 3D print the shell and paddles yourself, or you can grab the SCAD file and edit it to your proportions. Should you have a particularly big or small hand, it might need some adjusting. </p><p>It even comes with step-by-step instructions on where to place the internals, how to attach the different 3D-printed parts, and where to place the battery at the end. It looks pretty good, despite how weird it is. </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>The downside is that the instruction requires a whole other mouse to get this spider-like one working. Psuedoku disassembled an HSK Pro (presumably the G-Wolves HSK Pro) to get its buttons, battery, and sensor, then attached all the parts to the side, Frankenstein's Monster style. Luckily, it is alive and has a pretty killer sensor too. </p><p>The <a href="https://shop.g-wolves.com/products/g-wolves-hsk-pro-4k" target="_blank">G-Wolves HSK Pro</a> seems to be a very specific choice, because the mouse is comically small. It's effectively just the top half of a gaming mouse, which gives it a 26.8 g weight, despite its 8,000 Hz sensor. That little size presumably makes for a good base because of how centralised its internals are. You have one big clump of components that everything else gets built around.  </p><p>We've tried fingertip keypads before (<a href="https://www.pcgamer.com/azeron-gaming-keypad-for-mmo-fps-gaming-setup/" target="_blank">and really quite liked them</a>), and part of the joy of them is that those fingertip buttons give you access to quick controls. In this case, the standard left and right clicks work, as well as the side buttons, but the other fingertip mounts appear to be purely for you to place your fingers. Whether or not that gets you more precise controls is anyone's guess, and likely highly subjective, but I'm not brave enough to tear apart my mouse to give it a try. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Logitech's new mouse comes with a little bag to carry it around in. Oh, and it's foldable too ]]></title>
                                                                                                <dc:content><![CDATA[ <p>We've seen foldable phones come back, we've seen <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/lenovo-is-going-long-with-a-foldable-12-inch-handheld-gaming-pc-concept/" target="_blank">Lenovo testing a foldable gaming handheld screen</a>, but I didn't think I'd see the day that Logitech puts out a foldable gaming mouse. If you feel like your current mouse is just too chunky to comfortably fit into your bag, then the Mobi Fold is presumably for you. </p><p>Launched this week, <a href="https://www.logitech.com/en-us/shop/p/mobi-fold-mouse.910-007615" target="_blank">Logitech's Mobi Fold</a> comes in four colourways (Lilac, Graphite, Off White, and Sand) and can be purchased for $80. If you buy it directly from Logitech, it will even come with a Mobi Carry Pouch at checkout, which is a tiny grey bag to fit your even tinier mouse in. </p><p>That bag has a magnetic closure and a strap, so you can hook it onto your trousers, attach it to a pair of keys, or loop it on a chain should you want to dangle the mouse around as you walk. Personally, I'm not sure how much I'd actually use the bag, but the mouse itself seems sort of neat.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Ww14zX"></div>                            </div>                            <script src="https://kwizly.com/embed/Ww14zX.js" async></script><p>As a frequent cafe goer, I actually think I would use this, but perhaps more on my iPad than on a laptop. That being said, it's a bit more than I'd want to pay for something I only use sometimes when I'm out and about. But hey, that just means I'm not the target audience. </p><p>The mouse itself is sort of like a rectangle with curved edges, with a ribbed middle section where the whole thing folds in half. It looks a bit like Microsoft's Surface Arc, though bendy. It's fairly front-heavy (so no gaming ergonomics here) and comes with a small groove on the bottom to accommodate the top half when folded. It seems like most of the components are in the top half of the mouse, which makes some sense. The bottom half has a Type-C charging port, and the rest seems to be there to support your palm. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ktG7Bp4oHddmC693QUQaSm-1920-80.jpg" alt="Logitech Mobi Fold in a back pocket" /><figcaption><small role="credit">Logitec</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eQD4ptGtXTDtVR86UsNJJm-1920-80.jpg" alt="Logitech Mobi Fold in purple on a purple background" /><figcaption><small role="credit">Logitec</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4scLBS7NN9EWVxtgcXXdMm-1920-80.jpg" alt="Logitech Mobi Fold going into a bag" /><figcaption><small role="credit">Logitec</small></figcaption></figure></figure><p>As far as specs are concerned, the Mobi Fold comes with a <a href="https://www.pixart.com/products-comparison/7/Optical_Mouse_Sensor" target="_blank">PixArt PAW322</a> sensor, with a max DPI of 4000 and a minimum of 400. Logitech says you can get 32 days of battery life out of it (with 33 days if you use the Logitech Bolt USB receiver), and 22 hours of use out of a 1-minute quick charge. It does note, however, that you will have to bring your own USB Type-C cable. </p><p>Interestingly, there's no physical mouse wheel here. Instead, there are two buttons on a touch panel in its place. You can still use that section as a traditional scroll, but it also means getting access to a few new buttons. You can customise those two buttons in the Logitech Options+ App to do things like take screenshots or swap between applications. </p><p>As you might expect, folding the mouse shuts it down automatically, and it even has an AI model on-device that supposedly analyses when it's in use to stop misclicks as you are putting it away. It has also been durability tested, and Logitech says it should last more than 15 years, assuming you fold and unfold it eight times a day. </p><p>Logitech shows it in use on the product page, and it even works when not entirely flat on a table. Ergonomics will be important here for long-term use, but it does seem like it's intended more as a laptop companion for vigorously sorting through Excel sheets, rather than plugging it into your RTX 5090-equipped home rig. You can do either, but I wouldn't be expecting snappy headshots and a hurtlingly fast polling rate out of it.  </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/logitechs-new-mouse-comes-with-a-little-bag-to-carry-it-around-in-oh-and-its-foldable-too/</link>
                                                                            <description>
                            <![CDATA[ Accessorise, accessorise, accessorise. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Q39k8uyxtvpxBk26JrD8fi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kZDJtrfX6kXPdnnQmyvyPm-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 10 Jun 2026 15:22:02 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kZDJtrfX6kXPdnnQmyvyPm-1920-80.jpg">
                                                            <media:credit><![CDATA[Logitec]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logitech Mobi Fold next to its pouch on a table]]></media:description>                                                            <media:text><![CDATA[Logitech Mobi Fold next to its pouch on a table]]></media:text>
                                <media:title type="plain"><![CDATA[Logitech Mobi Fold next to its pouch on a table]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kZDJtrfX6kXPdnnQmyvyPm-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We've seen foldable phones come back, we've seen <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/lenovo-is-going-long-with-a-foldable-12-inch-handheld-gaming-pc-concept/" target="_blank">Lenovo testing a foldable gaming handheld screen</a>, but I didn't think I'd see the day that Logitech puts out a foldable gaming mouse. If you feel like your current mouse is just too chunky to comfortably fit into your bag, then the Mobi Fold is presumably for you. </p><p>Launched this week, <a href="https://www.logitech.com/en-us/shop/p/mobi-fold-mouse.910-007615" target="_blank">Logitech's Mobi Fold</a> comes in four colourways (Lilac, Graphite, Off White, and Sand) and can be purchased for $80. If you buy it directly from Logitech, it will even come with a Mobi Carry Pouch at checkout, which is a tiny grey bag to fit your even tinier mouse in. </p><p>That bag has a magnetic closure and a strap, so you can hook it onto your trousers, attach it to a pair of keys, or loop it on a chain should you want to dangle the mouse around as you walk. Personally, I'm not sure how much I'd actually use the bag, but the mouse itself seems sort of neat.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Ww14zX"></div>                            </div>                            <script src="https://kwizly.com/embed/Ww14zX.js" async></script><p>As a frequent cafe goer, I actually think I would use this, but perhaps more on my iPad than on a laptop. That being said, it's a bit more than I'd want to pay for something I only use sometimes when I'm out and about. But hey, that just means I'm not the target audience. </p><p>The mouse itself is sort of like a rectangle with curved edges, with a ribbed middle section where the whole thing folds in half. It looks a bit like Microsoft's Surface Arc, though bendy. It's fairly front-heavy (so no gaming ergonomics here) and comes with a small groove on the bottom to accommodate the top half when folded. It seems like most of the components are in the top half of the mouse, which makes some sense. The bottom half has a Type-C charging port, and the rest seems to be there to support your palm. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ktG7Bp4oHddmC693QUQaSm-1920-80.jpg" alt="Logitech Mobi Fold in a back pocket" /><figcaption><small role="credit">Logitec</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eQD4ptGtXTDtVR86UsNJJm-1920-80.jpg" alt="Logitech Mobi Fold in purple on a purple background" /><figcaption><small role="credit">Logitec</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4scLBS7NN9EWVxtgcXXdMm-1920-80.jpg" alt="Logitech Mobi Fold going into a bag" /><figcaption><small role="credit">Logitec</small></figcaption></figure></figure><p>As far as specs are concerned, the Mobi Fold comes with a <a href="https://www.pixart.com/products-comparison/7/Optical_Mouse_Sensor" target="_blank">PixArt PAW322</a> sensor, with a max DPI of 4000 and a minimum of 400. Logitech says you can get 32 days of battery life out of it (with 33 days if you use the Logitech Bolt USB receiver), and 22 hours of use out of a 1-minute quick charge. It does note, however, that you will have to bring your own USB Type-C cable. </p><p>Interestingly, there's no physical mouse wheel here. Instead, there are two buttons on a touch panel in its place. You can still use that section as a traditional scroll, but it also means getting access to a few new buttons. You can customise those two buttons in the Logitech Options+ App to do things like take screenshots or swap between applications. </p><p>As you might expect, folding the mouse shuts it down automatically, and it even has an AI model on-device that supposedly analyses when it's in use to stop misclicks as you are putting it away. It has also been durability tested, and Logitech says it should last more than 15 years, assuming you fold and unfold it eight times a day. </p><p>Logitech shows it in use on the product page, and it even works when not entirely flat on a table. Ergonomics will be important here for long-term use, but it does seem like it's intended more as a laptop companion for vigorously sorting through Excel sheets, rather than plugging it into your RTX 5090-equipped home rig. You can do either, but I wouldn't be expecting snappy headshots and a hurtlingly fast polling rate out of it.  </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Keychron told us its new gaming mouse switches will have haptics like the Superstrike, but I'll still have to feel them for myself to be convinced ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Last month, I reported on <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-calls-this-the-next-gen-mouse-switch-and-i-believe-it-optical-and-magnetic-all-in-one/" target="_blank">Keychron's announcement</a> for its new MagOptic hybrid optical-magnetic mouse switches. Following in the wake of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, these switches promise analogue tech for adjustable actuation and rapid trigger. Unlike the Superstrike, however, they also have standard optical switches in there, so you can choose between the two.</p><p>Given how impressed I was with the Superstrike's haptic-inductive technology and the potential of it being adopted by the gaming mouse industry at large, I was naturally quite excited when I saw Keychron's announcement. But I also had questions, the main one being: how, exactly, are you meant to feel the click at the right time when you've adjusted its actuation point?</p><p>The haptics take care of that with the Superstrike, but there was no mention of haptics in Keychron's original announcement. In fact, given pressing the button moves both the magnetic stem and the metal leaf used for the optical click, it seemed like the traditional click was all you'd get, and that wouldn't be adjustable.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Ww14zX"></div>                            </div>                            <script src="https://kwizly.com/embed/Ww14zX.js" async></script><p>Our very own Dave James, however, has recently <a href="https://www.pcgamer.com/hardware/gaming-mice/keychrons-on-the-fly-optical-hall-effect-mouse-switch-is-taking-on-logitech-over-one-of-the-few-things-people-didnt-like-about-the-superstrike/" target="_blank">spoken with Keychron about the MagOptic switch</a> directly at Computex. And it turns out, Keychron is solving the adjustable actuation click problem in exactly the same way as Logitech, by including haptics:</p><p>"A lot of people checking [the Superstrike], they say... I don't like the haptic... But If they want... the Logitech way, then they can try this one. We combine [the switch] with a haptic engine—it's just a vibrator—inside the mouse."</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/W65yFULv1oc" allowfullscreen></iframe></div></div><p>So that's the click question answered, right? Well, not quite, because this still leaves me wondering what happens to the traditional click when haptics are enabled. It seems very clear to me, judging from the Keychron video showing the mechanism, that the optical click is part and parcel of the whole mechanism, meaning it looks impossible to disable the physical movement while maintaining the magnetic switch function.</p><p>Which makes me wonder, will we feel a double-click feeling if you enable the haptics—one rumble when the magnetic switch actuates, and another when the metal leaf bends and the optical switch clicks?</p><p>I'd ask our Dave, but I'm told he's currently braving his very long flight home to sunny Britain—Godspeed, Dave-o. Apparently we'll see these in G-series mice at the end of this month, though, so I suppose none of us will have too long of a wait to find out.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/keychron-told-us-its-new-gaming-mouse-switches-will-have-haptics-like-the-superstrike-but-ill-still-have-to-feel-them-for-myself-to-be-convinced/</link>
                                                                            <description>
                            <![CDATA[ I really do hope they convince me, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TchTu9SLogR6rZr5FiVtYd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 04 Jun 2026 10:44:39 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Keychron MagOptic mouse switches]]></media:description>                                                            <media:text><![CDATA[Keychron MagOptic mouse switches]]></media:text>
                                <media:title type="plain"><![CDATA[Keychron MagOptic mouse switches]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Last month, I reported on <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-calls-this-the-next-gen-mouse-switch-and-i-believe-it-optical-and-magnetic-all-in-one/" target="_blank">Keychron's announcement</a> for its new MagOptic hybrid optical-magnetic mouse switches. Following in the wake of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, these switches promise analogue tech for adjustable actuation and rapid trigger. Unlike the Superstrike, however, they also have standard optical switches in there, so you can choose between the two.</p><p>Given how impressed I was with the Superstrike's haptic-inductive technology and the potential of it being adopted by the gaming mouse industry at large, I was naturally quite excited when I saw Keychron's announcement. But I also had questions, the main one being: how, exactly, are you meant to feel the click at the right time when you've adjusted its actuation point?</p><p>The haptics take care of that with the Superstrike, but there was no mention of haptics in Keychron's original announcement. In fact, given pressing the button moves both the magnetic stem and the metal leaf used for the optical click, it seemed like the traditional click was all you'd get, and that wouldn't be adjustable.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Ww14zX"></div>                            </div>                            <script src="https://kwizly.com/embed/Ww14zX.js" async></script><p>Our very own Dave James, however, has recently <a href="https://www.pcgamer.com/hardware/gaming-mice/keychrons-on-the-fly-optical-hall-effect-mouse-switch-is-taking-on-logitech-over-one-of-the-few-things-people-didnt-like-about-the-superstrike/" target="_blank">spoken with Keychron about the MagOptic switch</a> directly at Computex. And it turns out, Keychron is solving the adjustable actuation click problem in exactly the same way as Logitech, by including haptics:</p><p>"A lot of people checking [the Superstrike], they say... I don't like the haptic... But If they want... the Logitech way, then they can try this one. We combine [the switch] with a haptic engine—it's just a vibrator—inside the mouse."</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/W65yFULv1oc" allowfullscreen></iframe></div></div><p>So that's the click question answered, right? Well, not quite, because this still leaves me wondering what happens to the traditional click when haptics are enabled. It seems very clear to me, judging from the Keychron video showing the mechanism, that the optical click is part and parcel of the whole mechanism, meaning it looks impossible to disable the physical movement while maintaining the magnetic switch function.</p><p>Which makes me wonder, will we feel a double-click feeling if you enable the haptics—one rumble when the magnetic switch actuates, and another when the metal leaf bends and the optical switch clicks?</p><p>I'd ask our Dave, but I'm told he's currently braving his very long flight home to sunny Britain—Godspeed, Dave-o. Apparently we'll see these in G-series mice at the end of this month, though, so I suppose none of us will have too long of a wait to find out.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Keychron's on-the-fly optical/Hall effect mouse switch is taking on Logitech over one of the few things people didn't like about the SuperStrike ]]></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/W65yFULv1oc" allowfullscreen></iframe></div></div><p>Catching up with Keychron's CEO, Nick Xu, at Computex today, it wasn't just <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychrons-carbon-fiber-concept-is-the-skinniest-keyboard-ive-ever-typed-on/" target="_blank">carbon fiber keyboard concepts</a> that caught my eye, it was a set of new mouse switches, and even a wee tease of something just over the horizon. </p><p>Keychron originally unveiled its new MagOptic switches a month ago, showing off a new type of mouse switch that combines both Hall effect sensing and optical sensing in a single switch. And you can change which option you want to use on-the-fly just in the web app software.</p><p>The idea being that <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech's G Pro X2 SuperStrike</a> introduced gamers to Hall effect switches for gaming mice, but dispensed with the traditional click that has become the standard for mice since time immemorial in favour of a tuned haptic motor. Xu has had feedback from folk that they weren't happy with the feel of the haptics, "a lot of people complain about this because it's very different."</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>"So we saw that kind of feedback, so we say, 'why not just put in the traditional feedback?' For people still missing the traditional feedback. But if they like the Logitech way, then they can try this one."</p><p>He's showing me three different switches with different kinds of feedback, the same as you would get with a keyboard switch. One is clicky, one has that tactile bump, and the other is completely linear.</p><p>"We combine this with a haptic engine—you know, just a vibrator—inside the mouse, then it's just same trick," he says.</p><p>Logitech will say it's not quite the same trick, as it spent a long time trying out and tuning its haptic motors to get the click feel as close to a traditional mouse click as it could. And, personally, I don't mind it. But with the clicky and tactile MagOptic switches, you don't have to just <em>get close</em> to the feeling.</p><p>"Also in the software," Xu adds, "you can change to the magnetic or optical, the Logitech one only had just the option to go the magnet."</p><p>These switches are going to start appearing in gaming mice at the end of the month, with the G-series mice being the first. Just look out for the 'HE' suffix Keychron uses for its Hall effect keyboards.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3083px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="hPnC7mU9c7UGkjdFiUsDHL" name="keychron-next-gen-mouse-switch" alt="Keychron MagOptic mouse switches" src="https://cdn.mos.cms.futurecdn.net/hPnC7mU9c7UGkjdFiUsDHL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3083" height="1734" 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>Incongruously, it's already being used in an office trackball mouse. "A lot of people say, 'so Nick, why, why do you put in this in into your office mouse?' I say 'we have the best technology, why not?' You know, it's not that super expensive. Why not just put it in here? If they don't use, they don't use it, but it still performs like a normal mouse."</p><p>Conspiratorially, he then tells me he's holding the next generation in his hand. It's a new mouse switch with something else baked inside to improve both optical and magnetic mice, but as of right now, that's all under embargo.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/keychrons-on-the-fly-optical-hall-effect-mouse-switch-is-taking-on-logitech-over-one-of-the-few-things-people-didnt-like-about-the-superstrike/</link>
                                                                            <description>
                            <![CDATA[ Keychron's even using it's new MagOptic mouse switch in its office mice, "if they don't use, they don't use it, but it still performs like a normal mouse." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LeaBxBJKsqKTcKYUkGySDW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 14:34:43 +0000</pubDate>                                                                                                                                <updated>Tue, 02 Jun 2026 14:34:47 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Keychron MagOptic mouse switches]]></media:description>                                                            <media:text><![CDATA[Keychron MagOptic mouse switches]]></media:text>
                                <media:title type="plain"><![CDATA[Keychron MagOptic mouse switches]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/f7Mhnn5LM9SfdNL7Qj8uJL-1920-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/W65yFULv1oc" allowfullscreen></iframe></div></div><p>Catching up with Keychron's CEO, Nick Xu, at Computex today, it wasn't just <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychrons-carbon-fiber-concept-is-the-skinniest-keyboard-ive-ever-typed-on/" target="_blank">carbon fiber keyboard concepts</a> that caught my eye, it was a set of new mouse switches, and even a wee tease of something just over the horizon. </p><p>Keychron originally unveiled its new MagOptic switches a month ago, showing off a new type of mouse switch that combines both Hall effect sensing and optical sensing in a single switch. And you can change which option you want to use on-the-fly just in the web app software.</p><p>The idea being that <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech's G Pro X2 SuperStrike</a> introduced gamers to Hall effect switches for gaming mice, but dispensed with the traditional click that has become the standard for mice since time immemorial in favour of a tuned haptic motor. Xu has had feedback from folk that they weren't happy with the feel of the haptics, "a lot of people complain about this because it's very different."</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>"So we saw that kind of feedback, so we say, 'why not just put in the traditional feedback?' For people still missing the traditional feedback. But if they like the Logitech way, then they can try this one."</p><p>He's showing me three different switches with different kinds of feedback, the same as you would get with a keyboard switch. One is clicky, one has that tactile bump, and the other is completely linear.</p><p>"We combine this with a haptic engine—you know, just a vibrator—inside the mouse, then it's just same trick," he says.</p><p>Logitech will say it's not quite the same trick, as it spent a long time trying out and tuning its haptic motors to get the click feel as close to a traditional mouse click as it could. And, personally, I don't mind it. But with the clicky and tactile MagOptic switches, you don't have to just <em>get close</em> to the feeling.</p><p>"Also in the software," Xu adds, "you can change to the magnetic or optical, the Logitech one only had just the option to go the magnet."</p><p>These switches are going to start appearing in gaming mice at the end of the month, with the G-series mice being the first. Just look out for the 'HE' suffix Keychron uses for its Hall effect keyboards.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3083px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="hPnC7mU9c7UGkjdFiUsDHL" name="keychron-next-gen-mouse-switch" alt="Keychron MagOptic mouse switches" src="https://cdn.mos.cms.futurecdn.net/hPnC7mU9c7UGkjdFiUsDHL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3083" height="1734" 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>Incongruously, it's already being used in an office trackball mouse. "A lot of people say, 'so Nick, why, why do you put in this in into your office mouse?' I say 'we have the best technology, why not?' You know, it's not that super expensive. Why not just put it in here? If they don't use, they don't use it, but it still performs like a normal mouse."</p><p>Conspiratorially, he then tells me he's holding the next generation in his hand. It's a new mouse switch with something else baked inside to improve both optical and magnetic mice, but as of right now, that's all under embargo.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Corsair's new 'Nightsword' gaming mouse has a dedicated Stream Deck button, and I'm deciding if I'd accidentally press it too much ]]></title>
                                                                                                <dc:content><![CDATA[ <p>This may be hard for my colleagues and friends to believe, but I actually regularly use my Stream Deck. A little box with reprogrammable buttons that sits alongside your keyboard and mouse, I've found it a handy way of getting to certain tabs, to start and stop recording, and for generally being a bit more productive. Though the likes of the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review/" target="_blank">Corsair Scimitar Elite Wireless</a> had buttons that could work like a Stream Deck, we hadn't received a mouse with a direct Stream Deck button…until now. </p><p>Corsair has announced the <a href="https://www.corsair.com/us/en/p/gaming-mouse/ch-931e010-ww/nightsword-v2-wireless-stream-deck-gaming-mouse-ch-931e010-ww?srsltid=AfmBOopK2PvzYZmqVeT6n8D6UQVB3vGsoZ0KIR4M5KJ732pqHKzut59v" target="_blank">Nightsword v2 Wireless</a> for Computex 2026, which is, in all other ways, a pretty standard gaming mouse. For $130, you get a 33K DPI sensor and 8,000 Hz polling (wired and wireless), though the 89 g weight is a little heavy. However, its standout feature is that dedicated Stream Deck button. </p><p>Instead of making the button perform a specific control or open a specific tab (like individual buttons on a Stream Deck), it opens up a small digital panel on your monitor, which then gives you a few pre-chosen controls to pick from. In the example shown on the website, someone playing Arc Raiders opens a Stream Deck tab in-game and uses the mouse to go to their backpack and map. </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>In this use case, it seems less efficient than simply using a keyboard—but I do see the vision. If your keyboard controls are already overwhelmed, the Nightsword could be a solid pick. And that's before getting to more complex control. I use my Stream Deck to open some apps or get me to specific pages, which is more involved than simply clicking 'I' or 'M'.</p><p>Still, given that the button is placed just below the two left side buttons on the controller, I'm not entirely convinced I wouldn't accidentally misclick and open up my inventory by accident. </p><p>I suppose that all depends on how well-positioned the button is in practice, how easy it is to click, and how comfortable the mouse is. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZCVfVLa6QYMi8iF8TCuepJ-1920-80.jpg" alt="Corsair Nightsword V2 wireless gaming mouse with built-in Stream Deck button on a black desk" /><figcaption><small role="credit">corsair</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mZntGdEw7hTKYP9Z9qHBiE-1920-80.png" alt="Corsair Clipper Pro Mini 60 gaming keyboard on a black background with light at the top" /><figcaption><small role="credit">Corsair</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6KQdAzkHSPqZdY9VJzHjRN-1920-80.jpg" alt="Corsair HS35 v3 wireless gaming headset on a person" /><figcaption><small role="credit">Corsair</small></figcaption></figure></figure><p>Corsair has been trying to integrate the Stream Deck ecosystem into more devices for a while now, and we even saw a built-in Stream Deck in the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-galleon-100-sd-review/" target="_blank">Corsair Galleon 100 SD</a> earlier this year. In its latest release, Corsair says it is expanding 'its gaming ecosystem' with this mouse and a few more bits of hardware. </p><p>The company has also announced the Clipper Pro Mini, which is a 60% keyboard with Hall effect switches, rapid trigger, and 8,000 Hz polling, for <a href="https://www.corsair.com/us/en/p/keyboards/ch-979101j-na/clipper-pro-mini-60-hall-effect-gaming-keyboard-ch-979101j-na?srsltid=AfmBOoo7REJ7LVBdOEb5vtEEya-AmNsmE0jg8CsB3BecjpA7Dkg4oAfI" target="_blank">$100</a>. Finally, Corsair has announced the HS35 v3, a wireless gaming headset with 50 mm neodymium drivers and a 30-hour battery life for <a href="https://www.corsair.com/us/en/p/gaming-headsets/ca-9011402-ww/hs35-v3-wireless-gaming-headset-white-ca-9011402-ww?srsltid=AfmBOorj9rMnrp4KtOI8eyf1aRqR0nPAe3thP4AgIjTFOFxsyR-TAAIt" target="_blank">$80</a>. </p><p>The keyboard and headset do seem decently priced, which is a nice surprise for Computex this year.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/corsairs-new-nightsword-gaming-mouse-has-a-dedicated-stream-deck-button-and-im-deciding-if-id-accidentally-press-it-too-much/</link>
                                                                            <description>
                            <![CDATA[ And it's cheaper than the last two Stream Deck Peripherals. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dSScqbdqA2qeTezJDyiQJJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QM7XFwjuZcWiPn5ZQjGkn9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 11:52:02 +0000</pubDate>                                                                                                                                <updated>Tue, 02 Jun 2026 14:38:13 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QM7XFwjuZcWiPn5ZQjGkn9-1920-80.jpg">
                                                            <media:credit><![CDATA[Corsair]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Corsair&#039;s gaming keyboard, gaming headset, and gaming mouse on a white mousepad]]></media:description>                                                            <media:text><![CDATA[Corsair&#039;s gaming keyboard, gaming headset, and gaming mouse on a white mousepad]]></media:text>
                                <media:title type="plain"><![CDATA[Corsair&#039;s gaming keyboard, gaming headset, and gaming mouse on a white mousepad]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QM7XFwjuZcWiPn5ZQjGkn9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>This may be hard for my colleagues and friends to believe, but I actually regularly use my Stream Deck. A little box with reprogrammable buttons that sits alongside your keyboard and mouse, I've found it a handy way of getting to certain tabs, to start and stop recording, and for generally being a bit more productive. Though the likes of the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review/" target="_blank">Corsair Scimitar Elite Wireless</a> had buttons that could work like a Stream Deck, we hadn't received a mouse with a direct Stream Deck button…until now. </p><p>Corsair has announced the <a href="https://www.corsair.com/us/en/p/gaming-mouse/ch-931e010-ww/nightsword-v2-wireless-stream-deck-gaming-mouse-ch-931e010-ww?srsltid=AfmBOopK2PvzYZmqVeT6n8D6UQVB3vGsoZ0KIR4M5KJ732pqHKzut59v" target="_blank">Nightsword v2 Wireless</a> for Computex 2026, which is, in all other ways, a pretty standard gaming mouse. For $130, you get a 33K DPI sensor and 8,000 Hz polling (wired and wireless), though the 89 g weight is a little heavy. However, its standout feature is that dedicated Stream Deck button. </p><p>Instead of making the button perform a specific control or open a specific tab (like individual buttons on a Stream Deck), it opens up a small digital panel on your monitor, which then gives you a few pre-chosen controls to pick from. In the example shown on the website, someone playing Arc Raiders opens a Stream Deck tab in-game and uses the mouse to go to their backpack and map. </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>In this use case, it seems less efficient than simply using a keyboard—but I do see the vision. If your keyboard controls are already overwhelmed, the Nightsword could be a solid pick. And that's before getting to more complex control. I use my Stream Deck to open some apps or get me to specific pages, which is more involved than simply clicking 'I' or 'M'.</p><p>Still, given that the button is placed just below the two left side buttons on the controller, I'm not entirely convinced I wouldn't accidentally misclick and open up my inventory by accident. </p><p>I suppose that all depends on how well-positioned the button is in practice, how easy it is to click, and how comfortable the mouse is. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZCVfVLa6QYMi8iF8TCuepJ-1920-80.jpg" alt="Corsair Nightsword V2 wireless gaming mouse with built-in Stream Deck button on a black desk" /><figcaption><small role="credit">corsair</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mZntGdEw7hTKYP9Z9qHBiE-1920-80.png" alt="Corsair Clipper Pro Mini 60 gaming keyboard on a black background with light at the top" /><figcaption><small role="credit">Corsair</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6KQdAzkHSPqZdY9VJzHjRN-1920-80.jpg" alt="Corsair HS35 v3 wireless gaming headset on a person" /><figcaption><small role="credit">Corsair</small></figcaption></figure></figure><p>Corsair has been trying to integrate the Stream Deck ecosystem into more devices for a while now, and we even saw a built-in Stream Deck in the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-galleon-100-sd-review/" target="_blank">Corsair Galleon 100 SD</a> earlier this year. In its latest release, Corsair says it is expanding 'its gaming ecosystem' with this mouse and a few more bits of hardware. </p><p>The company has also announced the Clipper Pro Mini, which is a 60% keyboard with Hall effect switches, rapid trigger, and 8,000 Hz polling, for <a href="https://www.corsair.com/us/en/p/keyboards/ch-979101j-na/clipper-pro-mini-60-hall-effect-gaming-keyboard-ch-979101j-na?srsltid=AfmBOoo7REJ7LVBdOEb5vtEEya-AmNsmE0jg8CsB3BecjpA7Dkg4oAfI" target="_blank">$100</a>. Finally, Corsair has announced the HS35 v3, a wireless gaming headset with 50 mm neodymium drivers and a 30-hour battery life for <a href="https://www.corsair.com/us/en/p/gaming-headsets/ca-9011402-ww/hs35-v3-wireless-gaming-headset-white-ca-9011402-ww?srsltid=AfmBOorj9rMnrp4KtOI8eyf1aRqR0nPAe3thP4AgIjTFOFxsyR-TAAIt" target="_blank">$80</a>. </p><p>The keyboard and headset do seem decently priced, which is a nice surprise for Computex this year.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus has announced a gold-plated 82 g version of its Harpe II mouse with a 65K DPI, but it's way out of my budget ]]></title>
                                                                                                <dc:content><![CDATA[ <p>With Asus' ROG brand turning 20 years old this year, it has announced a whole pile of fancy black and gold gaming gear at Computex. Its new 82 g mouse is just as fancy as you'd expect and comes with some truly outrageous specs. </p><p>Called the ROG Harpe II Extreme Edition 20, Asus's new gaming mouse has "Authentic 24K gold-plated detailing", as well as a black translucent shell. The first time I saw it, I thought it looked a bit like it had cardboard internals (because gold under black certainly muted the colour palette a tad), but I don't think it looks bad by any stretch. </p><p>With it, you get a max 8,000 Hz polling rate (both wired and wireless), along with Asus's own ROG 100M optical micro switches, and a 65K DPI sensor. Those are truly absurdly high specs. The <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a>, also goes up to 8,000 Hz polling but only 50,000 DPI. However, the max polling and max DPI of both of these gaming mice are arguably too much for 99% of players, and 8k polling often isn't worth the battery drain for a wireless mouse. </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>82 g is a good bit heftier than the V4 Pro, and I suspect that could have something to do with the gold internals. It is based on the Harpe II Ace (which is only 48 grams), and Asus says its shape was developed with the help of esports pros. </p><p>Asus also notes it comes in a "display-ready presentation box", and that box seems to come with stickers, a cable, the connectors, and a keyring of some kind. Asus has also announced the <a href="https://rog.asus.com/keyboards/keyboards/aura-rgb/rog-azoth-extreme-edition-20/" target="_blank">ROG Azoth Extreme Edition 20</a>, which is a black and gold-themed variant of the <a href="https://www.pcgamer.com/asus-rog-azoth-gaming-keyboard-review/" target="_blank">ROG Azoth</a> gaming keyboard. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yVxnmSWZm6uEAcbVKkx4eb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8ijMSniTiPEzMow7Qxa2eb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9erVVK5HVH4eiAkN6M5ycb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6NVdwez8ZZRA5gLKvrmngb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure></figure><p>Asus has confirmed to me that the Harpe II Extreme Edition will be $260 and the Azoth Extreme Edition will be $600. That's a lot more than the Viper 4 Pro, and Razer's offering isn't exactly cheap.</p><p>As with all of Asus' ROG 20th anniversary items, this gaming mouse seems like a commemorative item, more so than something you'd just buy to simply use. And I'd imagine you'd need to have quite a bit of cash burning a hole in your pocket to consider it. Here's looking at you, <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/the-asus-rog-xbox-ally-x-has-just-received-an-upgraded-oled-model-in-a-bundle-with-ar-glasses-and-my-wallet-is-thoroughly-braced/" target="_blank">Xbox Ally X20 bundle</a>. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/asus-has-announced-a-gold-plated-82-g-version-of-its-harpe-ii-mouse-with-a-65k-dpi-but-price-rumours-make-me-think-its-way-out-of-my-budget/</link>
                                                                            <description>
                            <![CDATA[ That gold seems to be adding a lot of weight too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8MWbfUYX6wzjzS8P4r297D</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8ijMSniTiPEzMow7Qxa2eb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 01 Jun 2026 16:28:56 +0000</pubDate>                                                                                                                                <updated>Tue, 02 Jun 2026 16:30:57 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8ijMSniTiPEzMow7Qxa2eb-1920-80.jpg">
                                                            <media:credit><![CDATA[Asus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Harpe 20th anniversary edition from the side and top on a black background]]></media:description>                                                            <media:text><![CDATA[Asus ROG Harpe 20th anniversary edition from the side and top on a black background]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Harpe 20th anniversary edition from the side and top on a black background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8ijMSniTiPEzMow7Qxa2eb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With Asus' ROG brand turning 20 years old this year, it has announced a whole pile of fancy black and gold gaming gear at Computex. Its new 82 g mouse is just as fancy as you'd expect and comes with some truly outrageous specs. </p><p>Called the ROG Harpe II Extreme Edition 20, Asus's new gaming mouse has "Authentic 24K gold-plated detailing", as well as a black translucent shell. The first time I saw it, I thought it looked a bit like it had cardboard internals (because gold under black certainly muted the colour palette a tad), but I don't think it looks bad by any stretch. </p><p>With it, you get a max 8,000 Hz polling rate (both wired and wireless), along with Asus's own ROG 100M optical micro switches, and a 65K DPI sensor. Those are truly absurdly high specs. The <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a>, also goes up to 8,000 Hz polling but only 50,000 DPI. However, the max polling and max DPI of both of these gaming mice are arguably too much for 99% of players, and 8k polling often isn't worth the battery drain for a wireless mouse. </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>82 g is a good bit heftier than the V4 Pro, and I suspect that could have something to do with the gold internals. It is based on the Harpe II Ace (which is only 48 grams), and Asus says its shape was developed with the help of esports pros. </p><p>Asus also notes it comes in a "display-ready presentation box", and that box seems to come with stickers, a cable, the connectors, and a keyring of some kind. Asus has also announced the <a href="https://rog.asus.com/keyboards/keyboards/aura-rgb/rog-azoth-extreme-edition-20/" target="_blank">ROG Azoth Extreme Edition 20</a>, which is a black and gold-themed variant of the <a href="https://www.pcgamer.com/asus-rog-azoth-gaming-keyboard-review/" target="_blank">ROG Azoth</a> gaming keyboard. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yVxnmSWZm6uEAcbVKkx4eb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8ijMSniTiPEzMow7Qxa2eb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9erVVK5HVH4eiAkN6M5ycb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6NVdwez8ZZRA5gLKvrmngb-1920-80.jpg" alt="Asus ROG on a black background" /><figcaption><small role="credit">Asus</small></figcaption></figure></figure><p>Asus has confirmed to me that the Harpe II Extreme Edition will be $260 and the Azoth Extreme Edition will be $600. That's a lot more than the Viper 4 Pro, and Razer's offering isn't exactly cheap.</p><p>As with all of Asus' ROG 20th anniversary items, this gaming mouse seems like a commemorative item, more so than something you'd just buy to simply use. And I'd imagine you'd need to have quite a bit of cash burning a hole in your pocket to consider it. Here's looking at you, <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/the-asus-rog-xbox-ally-x-has-just-received-an-upgraded-oled-model-in-a-bundle-with-ar-glasses-and-my-wallet-is-thoroughly-braced/" target="_blank">Xbox Ally X20 bundle</a>. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This new gaming mouse looks to combine tech similar to Logitech's analogue clicks and Razer's frame sync but I'm a little sceptical ]]></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/el6_Ze40SFI" allowfullscreen></iframe></div></div><p>The <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> rattled the gaming mouse market earlier this year with its haptic-inductive clicks, but it was pretty certain other companies would be looking to get in on that analogue action as soon as possible. To that end, Finalmouse has just announced the tactical FPS-oriented, 38-gram <a href="https://www.youtube.com/watch?v=el6_Ze40SFI" target="_blank">Starlight X</a>, which also has magnetic clicks, except these also sit alongside a traditional mechanical click.</p><p>The solution is similar to the one that Keychron's "next-gen mouse switch" <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-calls-this-the-next-gen-mouse-switch-and-i-believe-it-optical-and-magnetic-all-in-one/" target="_blank">announced earlier this month</a>. The difference is that while Keychron is putting both analogue and mechanical systems inside one switch, Finalmouse has them working separately but under the same mouse buttons.</p><p>The analogue part of the equation should allow you to cut down the switch's "pre-travel window" and click quicker than you could using a traditional mechanical switch. It also lets you choose exactly where you want the button to actuate along its depression, just like with the Superstrike, and it lets you enable rapid trigger.</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>Finalmouse is claiming to actually go further than the Superstrike, though, because it's using TMR rather than inductive tech, which allows for more precise and accurate measurement. Thus why Finalmouse is calling it TMR-DS, standing for 'TMR Dual State Analog Click System.' This ultimately means—again according to Finalmouse—that you'll be able to adjust things in 0.01 mm increments, giving you 40 discreet steps to run through compared to the Superstrike's 10.</p><p>The thing I'm not so sure about here, though, is how those mechanical clicks will align with the analogue ones. Apparently, you'll be able to swap between them, but the point of having the physical click there alongside the analogue one is to give some physical click feedback. But this will be static, meaning it won't align with the analogue click. It's whether that mismatch will be noticeable and annoying that I'm concerned about.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1904px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nHVr4yyX34jb6FygT24RQH" name="image (45)" alt="An illustration showing the Finalmouse Starlight X's dual mechanical and TMR mouse switch system." src="https://cdn.mos.cms.futurecdn.net/nHVr4yyX34jb6FygT24RQH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1904" height="1071" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Finalmouse)</span></figcaption></figure><p>It's the same concern I mentioned when reporting on Keychron's similar solution. Logitech cracked that code by having haptics that align perfectly with the analogue click, wherever you set the actuation to. Finalmouse and Keychron don't have that, and until I've tried their mechanical alternative, I'll just have to reserve judgment and retain a bit of scepticism.</p><p>It's not just the clicks that are new, though, as it seems the Starlight X will also have some new frame syncing tech. It's called 'PerfectSync', and it sounds to my ears like it's the same as <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">Razer's FrameSync</a>, which has impressed me in the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>. It essentially syncs your mouse's sensor reading with the system's polling, which lets things stay snappy while keeping the total number of sensor readings low and thereby saving battery life. </p><p>Even without the new clicks and sync tech, the mouse is quite a departure from Finalmouse's previous ones. Previously, the company had pushed a lot of different versions of essentially the same mouse shapes. The main selling points were new boundaries being pushed in materials and light weight, which offset the company's <a href="https://www.youtube.com/watch?v=W_rhOjBtAIU" target="_blank">polarising history</a> for some.</p><p>This one, though, has a completely different shape designed for tactical FPS players such as Counter-Strike players. That basically means something a bit bigger and oriented around aiming stability. At (a claimed) 38 g, it'll still be plenty light, but that's not the main focus.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2058976631168122881"><p lang="en" dir="ltr">Introducing the Starlight X.Available to order May 30th$179💫The SLX features our first new shape in 11 years. More stability. More control. A shape built for games like Counter Strike.TMR-DS ™ . Our all new TMR Dual-State analog click system. With actuation control… pic.twitter.com/tJGLR9egXW<a href="https://twitter.com/cantworkitout/status/2058976631168122881">May 25, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The internal architecture has apparently been redesigned to focus on "structural efficiency", and materials have been changed to keep things strong but light—carbon fiber beams are used, for instance, as are titanium screws just like in the Superstrike, and the shell is made from a new carbon fiber composite.</p><p>So, a lightweight mouse for tactical FPS that promises all the best of the kinds of technology offered by Logitech's and Razer's latest and greatest mice. Sounds impressive, but it'll all boil down to how that hybrid mechanical-analogue click system feels. </p><p>It's available to order on May 30 at 11 am PT for $179. Given Finalmouse tends to launch its mice as limited-edition drops, there might be a scarcity element to this mouse, too. We'll have to wait and see.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/this-new-gaming-mouse-looks-to-combine-tech-similar-to-logitechs-analogue-clicks-and-razers-frame-sync-but-im-a-little-sceptical/</link>
                                                                            <description>
                            <![CDATA[ The clicks look similar to Keychron's recently announced solution, too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vFg3LGFvKEuheUa7WLttzR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DZUD8vPhhedudmXMZxu9p9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 26 May 2026 15:04:25 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DZUD8vPhhedudmXMZxu9p9-1920-80.jpg">
                                                            <media:credit><![CDATA[Finalmouse]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Finalmouse Starlight X gaming mouse on a night sky background.]]></media:description>                                                            <media:text><![CDATA[A Finalmouse Starlight X gaming mouse on a night sky background.]]></media:text>
                                <media:title type="plain"><![CDATA[A Finalmouse Starlight X gaming mouse on a night sky background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DZUD8vPhhedudmXMZxu9p9-1920-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/el6_Ze40SFI" allowfullscreen></iframe></div></div><p>The <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> rattled the gaming mouse market earlier this year with its haptic-inductive clicks, but it was pretty certain other companies would be looking to get in on that analogue action as soon as possible. To that end, Finalmouse has just announced the tactical FPS-oriented, 38-gram <a href="https://www.youtube.com/watch?v=el6_Ze40SFI" target="_blank">Starlight X</a>, which also has magnetic clicks, except these also sit alongside a traditional mechanical click.</p><p>The solution is similar to the one that Keychron's "next-gen mouse switch" <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-calls-this-the-next-gen-mouse-switch-and-i-believe-it-optical-and-magnetic-all-in-one/" target="_blank">announced earlier this month</a>. The difference is that while Keychron is putting both analogue and mechanical systems inside one switch, Finalmouse has them working separately but under the same mouse buttons.</p><p>The analogue part of the equation should allow you to cut down the switch's "pre-travel window" and click quicker than you could using a traditional mechanical switch. It also lets you choose exactly where you want the button to actuate along its depression, just like with the Superstrike, and it lets you enable rapid trigger.</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>Finalmouse is claiming to actually go further than the Superstrike, though, because it's using TMR rather than inductive tech, which allows for more precise and accurate measurement. Thus why Finalmouse is calling it TMR-DS, standing for 'TMR Dual State Analog Click System.' This ultimately means—again according to Finalmouse—that you'll be able to adjust things in 0.01 mm increments, giving you 40 discreet steps to run through compared to the Superstrike's 10.</p><p>The thing I'm not so sure about here, though, is how those mechanical clicks will align with the analogue ones. Apparently, you'll be able to swap between them, but the point of having the physical click there alongside the analogue one is to give some physical click feedback. But this will be static, meaning it won't align with the analogue click. It's whether that mismatch will be noticeable and annoying that I'm concerned about.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1904px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nHVr4yyX34jb6FygT24RQH" name="image (45)" alt="An illustration showing the Finalmouse Starlight X's dual mechanical and TMR mouse switch system." src="https://cdn.mos.cms.futurecdn.net/nHVr4yyX34jb6FygT24RQH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1904" height="1071" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Finalmouse)</span></figcaption></figure><p>It's the same concern I mentioned when reporting on Keychron's similar solution. Logitech cracked that code by having haptics that align perfectly with the analogue click, wherever you set the actuation to. Finalmouse and Keychron don't have that, and until I've tried their mechanical alternative, I'll just have to reserve judgment and retain a bit of scepticism.</p><p>It's not just the clicks that are new, though, as it seems the Starlight X will also have some new frame syncing tech. It's called 'PerfectSync', and it sounds to my ears like it's the same as <a href="https://www.pcgamer.com/hardware/gaming-mice/2026-is-shaping-up-to-be-a-golden-year-for-gaming-mice-as-razers-battery-boosting-framesync-adds-more-goodies-to-the-pot/" target="_blank">Razer's FrameSync</a>, which has impressed me in the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>. It essentially syncs your mouse's sensor reading with the system's polling, which lets things stay snappy while keeping the total number of sensor readings low and thereby saving battery life. </p><p>Even without the new clicks and sync tech, the mouse is quite a departure from Finalmouse's previous ones. Previously, the company had pushed a lot of different versions of essentially the same mouse shapes. The main selling points were new boundaries being pushed in materials and light weight, which offset the company's <a href="https://www.youtube.com/watch?v=W_rhOjBtAIU" target="_blank">polarising history</a> for some.</p><p>This one, though, has a completely different shape designed for tactical FPS players such as Counter-Strike players. That basically means something a bit bigger and oriented around aiming stability. At (a claimed) 38 g, it'll still be plenty light, but that's not the main focus.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2058976631168122881"><p lang="en" dir="ltr">Introducing the Starlight X.Available to order May 30th$179💫The SLX features our first new shape in 11 years. More stability. More control. A shape built for games like Counter Strike.TMR-DS ™ . Our all new TMR Dual-State analog click system. With actuation control… pic.twitter.com/tJGLR9egXW<a href="https://twitter.com/cantworkitout/status/2058976631168122881">May 25, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The internal architecture has apparently been redesigned to focus on "structural efficiency", and materials have been changed to keep things strong but light—carbon fiber beams are used, for instance, as are titanium screws just like in the Superstrike, and the shell is made from a new carbon fiber composite.</p><p>So, a lightweight mouse for tactical FPS that promises all the best of the kinds of technology offered by Logitech's and Razer's latest and greatest mice. Sounds impressive, but it'll all boil down to how that hybrid mechanical-analogue click system feels. </p><p>It's available to order on May 30 at 11 am PT for $179. Given Finalmouse tends to launch its mice as limited-edition drops, there might be a scarcity element to this mouse, too. We'll have to wait and see.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Replacing the Viper V4 Pro's skates gave one reviewer some Razer warranty trouble after glass pad sensor issues ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Given Razer's recent release of not just the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>, but also the <a href="https://www.razer.com/pc/gaming-mouse-mats/atlas-line" target="_blank">Atlas Pro</a> glass mouse pad, you might naturally have considered combining the two. </p><p>But peripheral reviewer <a href="https://www.youtube.com/@Spec0" target="_blank">Spec0</a> has recently <a href="https://x.com/StevenP015/status/2055256009380081766" target="_blank">struggled to do so</a> using third-party skates, not just because of sensor issues but also because of problems with Razer warranty and support, though this is supposedly <a href="https://x.com/StevenP015/status/2055354786979913806?s=20" target="_blank">being resolved</a> (via <a href="https://www.youtube.com/watch?v=W4cjlcSEqWs" target="_blank">ManPhalanges</a>).</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2055256009380081766"><p lang="en" dir="ltr">So my Razer Viper V4 Pro is unusable on multiple glasspads and I contacted Razer and they are refusing to do anything like rma because I switched to dots skates and that violates the warranty.Genuinely WTH! This is extremely standard in 2026 what a joke @Razer @TeamRazer pic.twitter.com/Prl0mGNL5g<a href="https://twitter.com/cantworkitout/status/2055256009380081766">May 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>After the Viper V4 Pro wouldn't work on different glass pads, the response that Spec got from Razer said, "We noticed that the mouse's original feet have been removed. Please note that the limited warranty does not cover issues resulting from improper use or handling of the product, including but not limited to misuse, abuse, negligence, unauthorised modification or repair, unauthorised commercial use, or use outside of Razer's recommended guidelines."</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>Presumably the replaced feet were being considered "unauthorised modification or repair", despite skate replacements being a merely external affair requiring no unscrewing or tinkering inside the mouse itself.</p><p>After a call with Razer, however, Spec says it was resolved as the company will be replacing the unit and is "working to define their warranty terms better and look into this sensor issue."</p><p>The default skates on the Viper V4 Pro are great, but replacing big PTFE feet with little dot feet is important when using a glass pad. The less friction the better, and it helps prevent scraping over dust, plus it can shave a gram or two off the weight. It's not usually advisable to use them on cloth, though, as the dots can sink in too much—this issue obviously doesn't occur with glass.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="a5Zxtj5fpqBAHrgSU3oPJC" name="IMG_2962" alt="The underside of a Razer Viper V4 Pro gaming mouse in-hand, showing its skates." src="https://cdn.mos.cms.futurecdn.net/a5Zxtj5fpqBAHrgSU3oPJC-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's unclear what Razer means when it says it is "working to define [its] warranty terms better", though hopefully it will mean clarifying its warranty to make it clear that replacing mouse skates doesn't void it. I've reached out to Razer for official comment and will update this story once I hear back.</p><p>I also don't know how widespread the sensor issue is with glass pads. I tested mine out quickly on a glass pad and noticed no issues. It seems unlikely that it will be a widespread issue given Razer would surely have tested the mouse out on its new Atlas Pro pad, as presumably both were in development at the same time.</p><p>Back to the replacement skates issue, though. I should note that the the Viper V4 Pro has a conspicuous lack of access divot next to the skates. In a lot of mice, there's a little dip along one of the edges which allows you to dig underneath to peel the skates off for replacement. </p><p>Not so with the Viper, which does make me wonder whether Razer considers any skate peeling a no-no. That would suck, given how great replacement skates are and how non-invasive the process is, so hopefully any warranty clarifications will be in the right direction.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/replacing-the-viper-v4-pros-skates-gave-one-reviewer-some-razer-warranty-trouble-after-glass-pad-sensor-issues/</link>
                                                                            <description>
                            <![CDATA[ The issue is resolved now, but it raises questions over warranty wording. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JKuCw6iaquBZJLiqyqL3k</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PSkP6s8aqyTHujw9iTzmda-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 22 May 2026 11:35:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PSkP6s8aqyTHujw9iTzmda-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A white Razer Viper V4 Pro gaming mouse]]></media:description>                                                            <media:text><![CDATA[A white Razer Viper V4 Pro gaming mouse]]></media:text>
                                <media:title type="plain"><![CDATA[A white Razer Viper V4 Pro gaming mouse]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PSkP6s8aqyTHujw9iTzmda-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Given Razer's recent release of not just the <a href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank">best gaming mouse</a> on the market, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Viper V4 Pro</a>, but also the <a href="https://www.razer.com/pc/gaming-mouse-mats/atlas-line" target="_blank">Atlas Pro</a> glass mouse pad, you might naturally have considered combining the two. </p><p>But peripheral reviewer <a href="https://www.youtube.com/@Spec0" target="_blank">Spec0</a> has recently <a href="https://x.com/StevenP015/status/2055256009380081766" target="_blank">struggled to do so</a> using third-party skates, not just because of sensor issues but also because of problems with Razer warranty and support, though this is supposedly <a href="https://x.com/StevenP015/status/2055354786979913806?s=20" target="_blank">being resolved</a> (via <a href="https://www.youtube.com/watch?v=W4cjlcSEqWs" target="_blank">ManPhalanges</a>).</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2055256009380081766"><p lang="en" dir="ltr">So my Razer Viper V4 Pro is unusable on multiple glasspads and I contacted Razer and they are refusing to do anything like rma because I switched to dots skates and that violates the warranty.Genuinely WTH! This is extremely standard in 2026 what a joke @Razer @TeamRazer pic.twitter.com/Prl0mGNL5g<a href="https://twitter.com/cantworkitout/status/2055256009380081766">May 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>After the Viper V4 Pro wouldn't work on different glass pads, the response that Spec got from Razer said, "We noticed that the mouse's original feet have been removed. Please note that the limited warranty does not cover issues resulting from improper use or handling of the product, including but not limited to misuse, abuse, negligence, unauthorised modification or repair, unauthorised commercial use, or use outside of Razer's recommended guidelines."</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>Presumably the replaced feet were being considered "unauthorised modification or repair", despite skate replacements being a merely external affair requiring no unscrewing or tinkering inside the mouse itself.</p><p>After a call with Razer, however, Spec says it was resolved as the company will be replacing the unit and is "working to define their warranty terms better and look into this sensor issue."</p><p>The default skates on the Viper V4 Pro are great, but replacing big PTFE feet with little dot feet is important when using a glass pad. The less friction the better, and it helps prevent scraping over dust, plus it can shave a gram or two off the weight. It's not usually advisable to use them on cloth, though, as the dots can sink in too much—this issue obviously doesn't occur with glass.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="a5Zxtj5fpqBAHrgSU3oPJC" name="IMG_2962" alt="The underside of a Razer Viper V4 Pro gaming mouse in-hand, showing its skates." src="https://cdn.mos.cms.futurecdn.net/a5Zxtj5fpqBAHrgSU3oPJC-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's unclear what Razer means when it says it is "working to define [its] warranty terms better", though hopefully it will mean clarifying its warranty to make it clear that replacing mouse skates doesn't void it. I've reached out to Razer for official comment and will update this story once I hear back.</p><p>I also don't know how widespread the sensor issue is with glass pads. I tested mine out quickly on a glass pad and noticed no issues. It seems unlikely that it will be a widespread issue given Razer would surely have tested the mouse out on its new Atlas Pro pad, as presumably both were in development at the same time.</p><p>Back to the replacement skates issue, though. I should note that the the Viper V4 Pro has a conspicuous lack of access divot next to the skates. In a lot of mice, there's a little dip along one of the edges which allows you to dig underneath to peel the skates off for replacement. </p><p>Not so with the Viper, which does make me wonder whether Razer considers any skate peeling a no-no. That would suck, given how great replacement skates are and how non-invasive the process is, so hopefully any warranty clarifications will be in the right direction.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Zowie EC2-DW review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Zowie EC2-DW" data-widget-title=""></div><p>I reckon I'm supposed to at least attempt to base my mouse review verdicts on the most objective things—specs, performance, features, price—as well as some of the more objective of the subjective elements (click feel, build quality, and so on). Because those are the things that most of you reading will also agree about, regardless of personal preference. But I really can't discount the subjective elements with the BenQ Zowie EC2-DW, because they are what keep bringing me back to this mouse, making it my absolute favourite to use right now.</p><p>Shape, despite being the most important aspect of a mouse, is at the bottom of the list of objective factors because of how subjective a preference mouse shape is—some like dinky fingertip mice, some like big ergo ones, and there's no impartial way to arbitrate. However, I'll be damned if I let that stop me from influencing my recommendation here, because my God, this thing feels fantastic as a palm gripper who mainly plays tactical shooters.</p><p>Its shape, in addition to its performance, which I've found to be thankfully flawless like most other premium mice these days, is what makes this the mouse I keep returning to over and over again, despite some of its flaws. And I suppose it just goes to show that, despite it being very much a personal preference, shape really is king, because once you find one that truly works for you, it's hard to move to anything else.</p><p>The <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, for instance, is the most technically perfect mouse I've ever held, and the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> offers the best performance for competitive gaming thanks to its super light actuation clicks with rapid trigger. So oh, how I wish I loved the shapes of those two mice as much as this Zowie—but I don't.</p><div  class="fancy-box"><div class="fancy_box-title">EC2-DW 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="ga46KjkU7X3tw6VCYeRYc" name="IMG_2923" caption="" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/ga46KjkU7X3tw6VCYeRYc-1920-80.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>Buttons: </strong>5<br><strong>Connectivity: </strong>2.4 GHz wireless, USB-C wired<br><strong>Sensor: </strong>PixArt PAW3950<br><strong>Switches: </strong>Mechanical<br><strong>Feet: </strong>Teflon (PTFE)<br><strong>Max DPI: </strong>3,200<br><strong>Weight: </strong>60 g (measured at 59 g)<br><strong>Polling rate: </strong>Up to 4K<br><strong>Battery life: </strong>80 hours @ 1,000 Hz<br><strong>RGB lighting: </strong>None<br><strong>Included extras: </strong>Cable, dongle, enhanced receiver, 2x spare skates (slow and fast)<br><strong>Price: </strong><a data-analytics-id="inline-link" href="https://zowie.benq.com/en-us/mouse/ec2-dw.html" target="_blank">$150</a> / <a data-analytics-id="inline-link" href="https://zowie.benq.eu/en-uk/mouse/ec2-dw.html" target="_blank">£130</a></p></div></div><p>If you've already used an EC-shaped mouse then you'll know what I'm talking about. But if not, let me explain: if you have regular-sized hands and use a palm grip or even a relaxed claw grip, the Zowie EC2-DW should sit under your palm incredibly snugly thanks to its ergonomic design. </p><p>I previously sang the praises of the <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">Pulsar X3 CrazyLight Mini</a> for its sway in this ergo direction, and I thought that slight tilt was as far as I'd go. But I was wrong. The EC2-DW has much more of an ergonomic tilt with the left side raised higher than the right (and less of an aggressive hump), and after I allowed my hand to settle into more of a palm grip than a relaxed claw grip, I was pleasantly surprised to find the Zowie is even more comfy to use.</p><p>It might go without saying that a mouse with ergonomic tilt is more comfortable to use than one without—that's kind of the point, as it tilts your wrist and arm in a slightly more natural orientation—but the trick is to also be able to maintain your accuracy and precision. If you go for a full-on vertical mouse like the <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-m5-review/" target="_blank">Keychron M5</a>, you're bound to miss some of those headshots. </p><p>Not so with the Zowie EC2-DW, though. I've found my accuracy, at least in tactical shooters like CS2, to be just as good as it is with any other competitive mouse. In fact, I reckon the ergo shape here actually helps a little because it keeps my hand relaxed, preventing me from tensing up too much.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qfezQUhboPdTTsVyW8zoc" name="IMG_2922" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/qfezQUhboPdTTsVyW8zoc-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That being said, it's not the lightest mouse on the market, at 60 g (59 g for my model, according to my scales, but there could be a rounding error). That's about as heavy as I'd go for a competitive gaming mouse these days. It's the same as the Superstrike, but others like the Viper V4 Pro beat it by quite a margin, and we even have sub-40 g mice these days like the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair Sabre V2 Pro</a>. But for palm gripping in tactical shooters, as well as day-to-day use, I'll take it.</p><p>Build quality is great, too. There's nary a creak to be found, even when I squeeze quite hard, and everything feels incredibly sturdy. The side buttons feel responsive, and although the main clicks and scroll wheel don't match up to, say, the Viper V4 Pro (what does?), they do feel pleasant. There's a little pre-travel, but not much, and clicks feel light and spammable. The scroll wheel, too, is plenty defined and still easy enough to, well, scroll. The installed PTFE skates are plenty smooth, and if you prefer something slower they come with a couple of replacements, including some slower black ones if you prefer a more controlled experience.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="w3USqsiqxEtayKUbvcPdb" name="zowie-fingerprint" alt="A Zowie EC2-DW gaming mouse with a thumbprint on the side." src="https://cdn.mos.cms.futurecdn.net/w3USqsiqxEtayKUbvcPdb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Probably my favourite thing about the EC2-DW's build, though, is its surface texture. I've nothing against the more matte coatings that most mice go for these days as they do feel nice under the palm, but the slightly glossier coating on the Zowie here helps keep the mouse firmly in place. It does make it a bit of a fingerprint fiend, though (check the photo above).</p><p>When it comes to actual performance, things are fantastic thanks not only to the PAW3950 sensor but also Zowie's 'enhanced' receiver. This receiver is a chonker (see the image below), but it's worth that size for two reasons. </p><p>First, it presumably allows for a bigger antenna, and I've had no connection or latency issues. But second, it allows for wireless charging, as you can place the front of the mouse onto the receiver and its pins will slide in to charge. It slots into place easily and is an incredibly convenient way to keep your mouse charged; I never worry about its battery, now, because I simply place it on the receiver as I leave my PC whenever I remember to do so.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2oh58uHcnQN8JkD6oiMJQ" name="IMG_2925" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/2oh58uHcnQN8JkD6oiMJQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The receiver also gives you the option for 4K polling. This mouse's predecessor, the CW version of the EC2, only reaches 1,000 Hz. It also has a worse sensor, and is heavier. </p><p>The specs even for the DW version might seem a little low by today's 8K, 30,000+ DPI standards, but don't be fooled by all that. 8K is <a href="https://www.pcgamer.com/hardware/gaming-mice/this-tool-tells-you-exactly-how-much-your-latency-could-improve-by-changing-your-mouses-polling-rate/" target="_blank">absolutely overkill</a> even for pro gaming, and the mouse is limited to 3,200 DPI only because it's driverless, ie, lacking software.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SdyaZHk5EH6EdotCD6vNFE" name="IMG_2937" alt="The underside of a Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/SdyaZHk5EH6EdotCD6vNFE-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That's intentional: people buy Zowie mice in part <em>because </em>they lack drivers and software and simply work very well out of the box—a fact that gives some peace of mind if you're travelling to different LAN parties and tournaments and using different systems, for instance. </p><p>You have a few different DPI settings to choose from via the underside button, but Zowie had to set the limit somewhere. The sensor should technically be capable of more if it weren't for that artificial cap, but who needs more? Most CS2 and Valorant pros play at 400, 800, or sometimes 1600 DPI, and that's all that's needed.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="twsErCjLSPD9NzgKDvL5b" name="IMG_2924" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/twsErCjLSPD9NzgKDvL5b-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can also change a few things via different button combinations, which I didn't expect. These things include DPI and polling, of course, but also LOD, motion sync, and click response. I haven't had any issues with just running the mouse on its default settings, though, after ensuring I'm at 1,000 Hz to save some battery and 800 DPI, which is my preferred setting.</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 perfect palm grip for tactical shooters: </strong>If games like CS2 and Valorant are your jam and you like to keep your palm flush to your mouse like me, the experience here is fantastic.<br><br>✅ <strong>You want to plug-n-play: </strong>This mouse requires no driver (other than a default OS one) and has no software. You simply plug it in and play, and you can change the most important settings with button combinations.</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 play tracking-heavy games: </strong>If you mainly play games like Overwatch or Apex Legends, you might want a less ergonomic mouse that allows for easier fingertip adjustments to track enemies.<br><br><strong>❌ You love ultralight mice: </strong>60 g is fine for competitive gaming, but it's starting to be a little on the heavy side compared to some ultralight mice today.</p></div></div><p>That being said, it's definitely not the mouse to go for if you like to delve into your mouse settings and mess with all kinds of things, such as sensor rotation.  </p><p>It's also not the mouse to go for if you play tracking-oriented games such as Overwatch and Apex Legends. For those kinds of games, I much prefer slipping into a slightly more relaxed claw grip using a less ergonomic mouse. That lets me use my fingers a little more to move the mouse under my palm and keep my crosshair tracking smoothly over moving targets. With this mouse, though, you're forced into more of a palm grip with less fingertip range of motion.</p><p>For tactical shooters like CS2, though, which require a lot of precision, stability, and occasional flicks, the BenQ Zowie EC2-DW is perfect. If those are the kinds of games you play, I wholeheartedly recommend it, as CS2 is my main shindig and I keep returning to this mouse even ahead of more technically impressive ones. </p><p>If you're not interested in those kinds of games, though, I'd probably only recommend it if you love a good palm grip, regardless, and also like the sound of a driverless mouse with easy wireless charging.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/zowie-ec2-dw-review/</link>
                                                                            <description>
                            <![CDATA[ The mouse of my dreams, but my dreams are all Counter-Strike, baby. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zpc438PSWv4gYWmGAqVvDS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8bJ322ApjmmmP3PtmZu8US-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 19 May 2026 10:23:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8bJ322ApjmmmP3PtmZu8US-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Zowie EC2-DW gaming mouse in-hand.]]></media:description>                                                            <media:text><![CDATA[A Zowie EC2-DW gaming mouse in-hand.]]></media:text>
                                <media:title type="plain"><![CDATA[A Zowie EC2-DW gaming mouse in-hand.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8bJ322ApjmmmP3PtmZu8US-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Zowie EC2-DW" data-widget-title=""></div><p>I reckon I'm supposed to at least attempt to base my mouse review verdicts on the most objective things—specs, performance, features, price—as well as some of the more objective of the subjective elements (click feel, build quality, and so on). Because those are the things that most of you reading will also agree about, regardless of personal preference. But I really can't discount the subjective elements with the BenQ Zowie EC2-DW, because they are what keep bringing me back to this mouse, making it my absolute favourite to use right now.</p><p>Shape, despite being the most important aspect of a mouse, is at the bottom of the list of objective factors because of how subjective a preference mouse shape is—some like dinky fingertip mice, some like big ergo ones, and there's no impartial way to arbitrate. However, I'll be damned if I let that stop me from influencing my recommendation here, because my God, this thing feels fantastic as a palm gripper who mainly plays tactical shooters.</p><p>Its shape, in addition to its performance, which I've found to be thankfully flawless like most other premium mice these days, is what makes this the mouse I keep returning to over and over again, despite some of its flaws. And I suppose it just goes to show that, despite it being very much a personal preference, shape really is king, because once you find one that truly works for you, it's hard to move to anything else.</p><p>The <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, for instance, is the most technically perfect mouse I've ever held, and the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> offers the best performance for competitive gaming thanks to its super light actuation clicks with rapid trigger. So oh, how I wish I loved the shapes of those two mice as much as this Zowie—but I don't.</p><div  class="fancy-box"><div class="fancy_box-title">EC2-DW 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="ga46KjkU7X3tw6VCYeRYc" name="IMG_2923" caption="" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/ga46KjkU7X3tw6VCYeRYc-1920-80.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>Buttons: </strong>5<br><strong>Connectivity: </strong>2.4 GHz wireless, USB-C wired<br><strong>Sensor: </strong>PixArt PAW3950<br><strong>Switches: </strong>Mechanical<br><strong>Feet: </strong>Teflon (PTFE)<br><strong>Max DPI: </strong>3,200<br><strong>Weight: </strong>60 g (measured at 59 g)<br><strong>Polling rate: </strong>Up to 4K<br><strong>Battery life: </strong>80 hours @ 1,000 Hz<br><strong>RGB lighting: </strong>None<br><strong>Included extras: </strong>Cable, dongle, enhanced receiver, 2x spare skates (slow and fast)<br><strong>Price: </strong><a data-analytics-id="inline-link" href="https://zowie.benq.com/en-us/mouse/ec2-dw.html" target="_blank">$150</a> / <a data-analytics-id="inline-link" href="https://zowie.benq.eu/en-uk/mouse/ec2-dw.html" target="_blank">£130</a></p></div></div><p>If you've already used an EC-shaped mouse then you'll know what I'm talking about. But if not, let me explain: if you have regular-sized hands and use a palm grip or even a relaxed claw grip, the Zowie EC2-DW should sit under your palm incredibly snugly thanks to its ergonomic design. </p><p>I previously sang the praises of the <a href="https://www.pcgamer.com/hardware/gaming-mice/pulsar-x3-crazylight-mini-review/" target="_blank">Pulsar X3 CrazyLight Mini</a> for its sway in this ergo direction, and I thought that slight tilt was as far as I'd go. But I was wrong. The EC2-DW has much more of an ergonomic tilt with the left side raised higher than the right (and less of an aggressive hump), and after I allowed my hand to settle into more of a palm grip than a relaxed claw grip, I was pleasantly surprised to find the Zowie is even more comfy to use.</p><p>It might go without saying that a mouse with ergonomic tilt is more comfortable to use than one without—that's kind of the point, as it tilts your wrist and arm in a slightly more natural orientation—but the trick is to also be able to maintain your accuracy and precision. If you go for a full-on vertical mouse like the <a href="https://www.pcgamer.com/hardware/gaming-mice/keychron-m5-review/" target="_blank">Keychron M5</a>, you're bound to miss some of those headshots. </p><p>Not so with the Zowie EC2-DW, though. I've found my accuracy, at least in tactical shooters like CS2, to be just as good as it is with any other competitive mouse. In fact, I reckon the ergo shape here actually helps a little because it keeps my hand relaxed, preventing me from tensing up too much.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qfezQUhboPdTTsVyW8zoc" name="IMG_2922" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/qfezQUhboPdTTsVyW8zoc-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That being said, it's not the lightest mouse on the market, at 60 g (59 g for my model, according to my scales, but there could be a rounding error). That's about as heavy as I'd go for a competitive gaming mouse these days. It's the same as the Superstrike, but others like the Viper V4 Pro beat it by quite a margin, and we even have sub-40 g mice these days like the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review/" target="_blank">Corsair Sabre V2 Pro</a>. But for palm gripping in tactical shooters, as well as day-to-day use, I'll take it.</p><p>Build quality is great, too. There's nary a creak to be found, even when I squeeze quite hard, and everything feels incredibly sturdy. The side buttons feel responsive, and although the main clicks and scroll wheel don't match up to, say, the Viper V4 Pro (what does?), they do feel pleasant. There's a little pre-travel, but not much, and clicks feel light and spammable. The scroll wheel, too, is plenty defined and still easy enough to, well, scroll. The installed PTFE skates are plenty smooth, and if you prefer something slower they come with a couple of replacements, including some slower black ones if you prefer a more controlled experience.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="w3USqsiqxEtayKUbvcPdb" name="zowie-fingerprint" alt="A Zowie EC2-DW gaming mouse with a thumbprint on the side." src="https://cdn.mos.cms.futurecdn.net/w3USqsiqxEtayKUbvcPdb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Probably my favourite thing about the EC2-DW's build, though, is its surface texture. I've nothing against the more matte coatings that most mice go for these days as they do feel nice under the palm, but the slightly glossier coating on the Zowie here helps keep the mouse firmly in place. It does make it a bit of a fingerprint fiend, though (check the photo above).</p><p>When it comes to actual performance, things are fantastic thanks not only to the PAW3950 sensor but also Zowie's 'enhanced' receiver. This receiver is a chonker (see the image below), but it's worth that size for two reasons. </p><p>First, it presumably allows for a bigger antenna, and I've had no connection or latency issues. But second, it allows for wireless charging, as you can place the front of the mouse onto the receiver and its pins will slide in to charge. It slots into place easily and is an incredibly convenient way to keep your mouse charged; I never worry about its battery, now, because I simply place it on the receiver as I leave my PC whenever I remember to do so.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2oh58uHcnQN8JkD6oiMJQ" name="IMG_2925" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/2oh58uHcnQN8JkD6oiMJQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The receiver also gives you the option for 4K polling. This mouse's predecessor, the CW version of the EC2, only reaches 1,000 Hz. It also has a worse sensor, and is heavier. </p><p>The specs even for the DW version might seem a little low by today's 8K, 30,000+ DPI standards, but don't be fooled by all that. 8K is <a href="https://www.pcgamer.com/hardware/gaming-mice/this-tool-tells-you-exactly-how-much-your-latency-could-improve-by-changing-your-mouses-polling-rate/" target="_blank">absolutely overkill</a> even for pro gaming, and the mouse is limited to 3,200 DPI only because it's driverless, ie, lacking software.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SdyaZHk5EH6EdotCD6vNFE" name="IMG_2937" alt="The underside of a Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/SdyaZHk5EH6EdotCD6vNFE-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That's intentional: people buy Zowie mice in part <em>because </em>they lack drivers and software and simply work very well out of the box—a fact that gives some peace of mind if you're travelling to different LAN parties and tournaments and using different systems, for instance. </p><p>You have a few different DPI settings to choose from via the underside button, but Zowie had to set the limit somewhere. The sensor should technically be capable of more if it weren't for that artificial cap, but who needs more? Most CS2 and Valorant pros play at 400, 800, or sometimes 1600 DPI, and that's all that's needed.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="twsErCjLSPD9NzgKDvL5b" name="IMG_2924" alt="A Zowie EC2-DW gaming mouse." src="https://cdn.mos.cms.futurecdn.net/twsErCjLSPD9NzgKDvL5b-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can also change a few things via different button combinations, which I didn't expect. These things include DPI and polling, of course, but also LOD, motion sync, and click response. I haven't had any issues with just running the mouse on its default settings, though, after ensuring I'm at 1,000 Hz to save some battery and 800 DPI, which is my preferred setting.</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 perfect palm grip for tactical shooters: </strong>If games like CS2 and Valorant are your jam and you like to keep your palm flush to your mouse like me, the experience here is fantastic.<br><br>✅ <strong>You want to plug-n-play: </strong>This mouse requires no driver (other than a default OS one) and has no software. You simply plug it in and play, and you can change the most important settings with button combinations.</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 play tracking-heavy games: </strong>If you mainly play games like Overwatch or Apex Legends, you might want a less ergonomic mouse that allows for easier fingertip adjustments to track enemies.<br><br><strong>❌ You love ultralight mice: </strong>60 g is fine for competitive gaming, but it's starting to be a little on the heavy side compared to some ultralight mice today.</p></div></div><p>That being said, it's definitely not the mouse to go for if you like to delve into your mouse settings and mess with all kinds of things, such as sensor rotation.  </p><p>It's also not the mouse to go for if you play tracking-oriented games such as Overwatch and Apex Legends. For those kinds of games, I much prefer slipping into a slightly more relaxed claw grip using a less ergonomic mouse. That lets me use my fingers a little more to move the mouse under my palm and keep my crosshair tracking smoothly over moving targets. With this mouse, though, you're forced into more of a palm grip with less fingertip range of motion.</p><p>For tactical shooters like CS2, though, which require a lot of precision, stability, and occasional flicks, the BenQ Zowie EC2-DW is perfect. If those are the kinds of games you play, I wholeheartedly recommend it, as CS2 is my main shindig and I keep returning to this mouse even ahead of more technically impressive ones. </p><p>If you're not interested in those kinds of games, though, I'd probably only recommend it if you love a good palm grip, regardless, and also like the sound of a driverless mouse with easy wireless charging.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Keychron calls this 'the next gen mouse switch' and I believe it: optical and magnetic all-in-one ]]></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/W65yFULv1oc" allowfullscreen></iframe></div></div><p>"Tune your trigger, fire faster," says Keychron about its <a href="https://www.keychron.com/pages/new-micro-switch" target="_blank">upcoming magnetic-optical hybrid mouse switch</a>, in words that ring very familiar in the wake of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>. And I'm kind of shocked at just how soon after the launch of the Superstrike's magnetic switches we're seeing a hybrid version that allows you to toggle between traditional clicks and analogue magnetic ones like in the Superstrike.</p><p>"Freely switch between traditional Optical Mode and Linear Magnetic Mode in Keychron Launcher web app. Get non-contact reliability, no contact bounce, and a faster, cleaner trigger signal."</p><p>The mechanism in Keychron's upcoming MaOptic switch is incredibly neat. Pushing down on the mouse button moves a metal strip between the optical scanner on one end, and on the other end the plunger moves down its electromagnetic path. The simple but ingenious thing that ties it all together is a strip of metal that has the optical side of the equation moving in tandem. You can check it out in the video above.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>Naturally, I'll be eager to see just how well it works in practice and whether there are any quality control issues. Will the strip of metal always remain aligned properly for accurate and responsive clicks, for instance? Will the switches be more prone to failure?</p><p>Saying that, it's Keychron, and our experience of Keychron products here at PC Gamer has generally been pretty great. I've personally used a Keychron Hall effect keyboard extensively and found build quality and quality control to be good.</p><p>We've already seen <a href="https://www.youtube.com/shorts/5DbMqb-LEhU" target="_blank">hints</a> of <a href="https://x.com/elastiXx94/status/2050210891690283378?s=20" target="_blank">analogue mouse switches</a> riding swiftly off the back of the Superstrike, though none are on the market yet. I really didn't expect to see a hybrid one so soon, though, even if it just an announcement.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2053128111646974103"><p lang="en" dir="ltr">A new species is coming. One switch. Two trigger modes.Meet the Keychron MagOptic Micro Switch — freely switch between Optical Mode and Magnetic Mode in Keychron Launcher web app while preserving a crisp clicky feel.Faster. Cleaner. More durable. More👉 https://t.co/P2pe9m8Qar pic.twitter.com/UUVUXSzCDw<a href="https://twitter.com/cantworkitout/status/2053128111646974103">May 9, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The benefit to Keychron's hybrid approach here is that gaming mouse brands won't necessarily have to segment their market. One concern I had about the shift in the market the Superstrike might bring was that it could split the market in two and make gaming mouse manufacturers not know whether to make something with mechanical, optical, or magnetic switches. With a hybrid solution like this, there's no segmenting needed.</p><p>Assuming it works well and doesn't cost an arm and a leg, of course, which will be precisely the question.</p><p>Speaking of questions, though, I do have some. Keychron says "Hall sensing preserves a crisp clicky mechanical feel while enabling adjustable actuation points and Rapid Trigger functionality", but this click will need to be adjustable depending on where the actuation is set. The Superstrike achieves this with its bespoke haptics—will Keychron have the same? And if so, how will it 'disable' the traditional click sound and feel on the optical side?</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Afqros6yoNknwqafk256CS" name="IMG_2262" alt="The haptics motor underneath the button plate of a Logitech G Pro X2 Superstrike gaming mouse." src="https://cdn.mos.cms.futurecdn.net/Afqros6yoNknwqafk256CS-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The haptics motor underneath the button plate of a Logitech G Pro X2 Superstrike gaming mouse. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Keychron says: "The Keychron MagOptic Switch is designed to preserve a defined clicky mechanical-style feel through the metal leaf spring structure in Magnetic Mode. Hall sensing handles trigger detection in the background, allowing advanced features without sacrificing crisp tactile feedback."</p><p>But this doesn't seem to answer the adjustable part. Perhaps Keychron has a clever solution, we'll have to wait and see, but as it stands and judging by the metal leaf structure, it looks like it might not have an adjustable click.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/keychron-calls-this-the-next-gen-mouse-switch-and-i-believe-it-optical-and-magnetic-all-in-one/</link>
                                                                            <description>
                            <![CDATA[ Rapid trigger or traditional optical clicks: Keychron says why not both? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">X8VtWMKu7RUv4cU65n7A4b</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3K32QJuM4bx5PRupRucEgK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 11 May 2026 11:07:30 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/3K32QJuM4bx5PRupRucEgK-1920-80.jpg">
                                                            <media:credit><![CDATA[Keychron]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Keychron MagOptic hybrid magnetic-optical mouse switch animation still.]]></media:description>                                                            <media:text><![CDATA[A Keychron MagOptic hybrid magnetic-optical mouse switch animation still.]]></media:text>
                                <media:title type="plain"><![CDATA[A Keychron MagOptic hybrid magnetic-optical mouse switch animation still.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3K32QJuM4bx5PRupRucEgK-1920-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/W65yFULv1oc" allowfullscreen></iframe></div></div><p>"Tune your trigger, fire faster," says Keychron about its <a href="https://www.keychron.com/pages/new-micro-switch" target="_blank">upcoming magnetic-optical hybrid mouse switch</a>, in words that ring very familiar in the wake of the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>. And I'm kind of shocked at just how soon after the launch of the Superstrike's magnetic switches we're seeing a hybrid version that allows you to toggle between traditional clicks and analogue magnetic ones like in the Superstrike.</p><p>"Freely switch between traditional Optical Mode and Linear Magnetic Mode in Keychron Launcher web app. Get non-contact reliability, no contact bounce, and a faster, cleaner trigger signal."</p><p>The mechanism in Keychron's upcoming MaOptic switch is incredibly neat. Pushing down on the mouse button moves a metal strip between the optical scanner on one end, and on the other end the plunger moves down its electromagnetic path. The simple but ingenious thing that ties it all together is a strip of metal that has the optical side of the equation moving in tandem. You can check it out in the video above.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>Naturally, I'll be eager to see just how well it works in practice and whether there are any quality control issues. Will the strip of metal always remain aligned properly for accurate and responsive clicks, for instance? Will the switches be more prone to failure?</p><p>Saying that, it's Keychron, and our experience of Keychron products here at PC Gamer has generally been pretty great. I've personally used a Keychron Hall effect keyboard extensively and found build quality and quality control to be good.</p><p>We've already seen <a href="https://www.youtube.com/shorts/5DbMqb-LEhU" target="_blank">hints</a> of <a href="https://x.com/elastiXx94/status/2050210891690283378?s=20" target="_blank">analogue mouse switches</a> riding swiftly off the back of the Superstrike, though none are on the market yet. I really didn't expect to see a hybrid one so soon, though, even if it just an announcement.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2053128111646974103"><p lang="en" dir="ltr">A new species is coming. One switch. Two trigger modes.Meet the Keychron MagOptic Micro Switch — freely switch between Optical Mode and Magnetic Mode in Keychron Launcher web app while preserving a crisp clicky feel.Faster. Cleaner. More durable. More👉 https://t.co/P2pe9m8Qar pic.twitter.com/UUVUXSzCDw<a href="https://twitter.com/cantworkitout/status/2053128111646974103">May 9, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The benefit to Keychron's hybrid approach here is that gaming mouse brands won't necessarily have to segment their market. One concern I had about the shift in the market the Superstrike might bring was that it could split the market in two and make gaming mouse manufacturers not know whether to make something with mechanical, optical, or magnetic switches. With a hybrid solution like this, there's no segmenting needed.</p><p>Assuming it works well and doesn't cost an arm and a leg, of course, which will be precisely the question.</p><p>Speaking of questions, though, I do have some. Keychron says "Hall sensing preserves a crisp clicky mechanical feel while enabling adjustable actuation points and Rapid Trigger functionality", but this click will need to be adjustable depending on where the actuation is set. The Superstrike achieves this with its bespoke haptics—will Keychron have the same? And if so, how will it 'disable' the traditional click sound and feel on the optical side?</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Afqros6yoNknwqafk256CS" name="IMG_2262" alt="The haptics motor underneath the button plate of a Logitech G Pro X2 Superstrike gaming mouse." src="https://cdn.mos.cms.futurecdn.net/Afqros6yoNknwqafk256CS-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The haptics motor underneath the button plate of a Logitech G Pro X2 Superstrike gaming mouse. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Keychron says: "The Keychron MagOptic Switch is designed to preserve a defined clicky mechanical-style feel through the metal leaf spring structure in Magnetic Mode. Hall sensing handles trigger detection in the background, allowing advanced features without sacrificing crisp tactile feedback."</p><p>But this doesn't seem to answer the adjustable part. Perhaps Keychron has a clever solution, we'll have to wait and see, but as it stands and judging by the metal leaf structure, it looks like it might not have an adjustable click.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Elo Shapes reveals a speedy gaming mouse from a fresh new brand that weighs even less than the competition ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Gaming mouse fiends like me have gotta love <a href="https://www.pcgamer.com/hardware/gaming-mice/this-web-tool-now-lets-you-compare-gaming-mouse-shapes-in-full-3d-and-let-this-mouse-nerd-tell-you-why-thats-important/" target="_blank">Elo Shapes</a>—if not for its handy-dandy hardware comparison tools, then for the heads up on a new challenger entering the arena.</p><p>The <a href="https://x.com/EloShapes/status/2052432611834745177?s=20" target="_blank">EloShapes X account</a> recently shone its spotlight on the Oyrein Pong Zero, and it's not hard to see why. Apparently the initial offering of a new brand, the Pong Zero is a super lightweight gaming mouse with a Pixart PAW3950 sensor under the hood, and Omron Optical switches.</p><p>I'm sure the competitive crowd won't shrug their shoulders at another gaming mouse to put to the test—especially as <a href="https://www.eloshapes.com/mouse/compare?p=oyrein-pong-zero" target="_blank">this one weighs only 37 grams according to EloShapes</a>. That's practically bantamweight as these things go, with our current pick for <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-competitive-gaming-mouse" target="_blank">the best competitive gaming mouse</a>, the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, weighing much closer to 60 grams.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>On the subject of chickens, it never ends well to count yours before they've hatched—and by that I mean there currently isn't much information about when the Oyrein Pong Zero will be released, or how much it will cost.</p><p>Both the highly customisable <a href="https://www.pcgamer.com/hardware/gaming-mice/orbital-pathfinder-review/" target="_blank">Orbital Pathfinder</a>, and the <a href="https://www.pcgamer.com/hardware/gaming-mice/be-quiet-dark-perk-ergo-review/" target="_blank">Be Quiet! Dark Perk Ergo</a> features the same super precise Pixart PAW3950 sensor and satisfying Omron switches. That <em>could </em>give us a ballpark price point in the region of somewhere between $110-190—though I admit, that's a pretty big park.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2052432611834745177"><p lang="en" dir="ltr">A new brand has entered the market with the OYREIN Pong Zero.- Size: 118 x 60.5 x 37.7 mm- Weight: 37- Sensor: Pixart PAW3950- MCU: Nordic nRF54H20- Switches: Omron Optical- Encoder: TTC Gold pic.twitter.com/oqO2o32Txh<a href="https://twitter.com/cantworkitout/status/2052432611834745177">May 7, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Still, both of those aforementioned mice enjoy an 8,000 Hz polling rate, a max speed of 750 IPS, and DPI of 30,000 or more. Based on these gaming mices' shared features, that suggests the Oyrein Pong Zero may be a speedy mouse you won't want to lose track of. I'll certainly be keeping my eyes peeled—especially if it comes in more colours like that fetching minty matcha green. Surely, Oyrien is already considering a lilac colourway, right?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/elo-shapes-reveals-a-speedy-gaming-mouse-from-a-fresh-new-brand-that-weighs-even-less-than-the-competition/</link>
                                                                            <description>
                            <![CDATA[ Speeding into view. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iJwYUMATqV2WFH3zGyG3JM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EsVXRNdVxHtzAuunjJ3KDo-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 08 May 2026 16:41:34 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/EsVXRNdVxHtzAuunjJ3KDo-1920-80.jpg">
                                                            <media:credit><![CDATA[Oyrein]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Oyrein Pong Zero floats in a gradient void.]]></media:description>                                                            <media:text><![CDATA[The Oyrein Pong Zero floats in a gradient void.]]></media:text>
                                <media:title type="plain"><![CDATA[The Oyrein Pong Zero floats in a gradient void.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EsVXRNdVxHtzAuunjJ3KDo-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Gaming mouse fiends like me have gotta love <a href="https://www.pcgamer.com/hardware/gaming-mice/this-web-tool-now-lets-you-compare-gaming-mouse-shapes-in-full-3d-and-let-this-mouse-nerd-tell-you-why-thats-important/" target="_blank">Elo Shapes</a>—if not for its handy-dandy hardware comparison tools, then for the heads up on a new challenger entering the arena.</p><p>The <a href="https://x.com/EloShapes/status/2052432611834745177?s=20" target="_blank">EloShapes X account</a> recently shone its spotlight on the Oyrein Pong Zero, and it's not hard to see why. Apparently the initial offering of a new brand, the Pong Zero is a super lightweight gaming mouse with a Pixart PAW3950 sensor under the hood, and Omron Optical switches.</p><p>I'm sure the competitive crowd won't shrug their shoulders at another gaming mouse to put to the test—especially as <a href="https://www.eloshapes.com/mouse/compare?p=oyrein-pong-zero" target="_blank">this one weighs only 37 grams according to EloShapes</a>. That's practically bantamweight as these things go, with our current pick for <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-competitive-gaming-mouse" target="_blank">the best competitive gaming mouse</a>, the <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a>, weighing much closer to 60 grams.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>On the subject of chickens, it never ends well to count yours before they've hatched—and by that I mean there currently isn't much information about when the Oyrein Pong Zero will be released, or how much it will cost.</p><p>Both the highly customisable <a href="https://www.pcgamer.com/hardware/gaming-mice/orbital-pathfinder-review/" target="_blank">Orbital Pathfinder</a>, and the <a href="https://www.pcgamer.com/hardware/gaming-mice/be-quiet-dark-perk-ergo-review/" target="_blank">Be Quiet! Dark Perk Ergo</a> features the same super precise Pixart PAW3950 sensor and satisfying Omron switches. That <em>could </em>give us a ballpark price point in the region of somewhere between $110-190—though I admit, that's a pretty big park.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2052432611834745177"><p lang="en" dir="ltr">A new brand has entered the market with the OYREIN Pong Zero.- Size: 118 x 60.5 x 37.7 mm- Weight: 37- Sensor: Pixart PAW3950- MCU: Nordic nRF54H20- Switches: Omron Optical- Encoder: TTC Gold pic.twitter.com/oqO2o32Txh<a href="https://twitter.com/cantworkitout/status/2052432611834745177">May 7, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Still, both of those aforementioned mice enjoy an 8,000 Hz polling rate, a max speed of 750 IPS, and DPI of 30,000 or more. Based on these gaming mices' shared features, that suggests the Oyrein Pong Zero may be a speedy mouse you won't want to lose track of. I'll certainly be keeping my eyes peeled—especially if it comes in more colours like that fetching minty matcha green. Surely, Oyrien is already considering a lilac colourway, right?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Some pro gamers change mouse pads every few months, and that makes me wonder how often I should change mine ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Mouse pads are admittedly something I don't tend to think about too much. If it feels good under the palm and doesn't become a hindrance to my movement, I'll continue using it. But, alas, I'm not a pro, and it turns out they get through some of the <a href="https://www.pcgamer.com/best-mouse-pad-for-gaming/" target="_blank">best gaming mouse pads</a> like an actual mouse gets through cheese. That's to say a lot. </p><p><a href="https://www.tiktok.com/@eslcounterstrike/video/7620948781537725729?_r=1&_t=ZN-968g4bdY8sZ" target="_blank">Shared to TikTok </a>by ESL Counter-Strike, one of the world's biggest leagues, it interviewed professional gamers and asked how often they swapped mouse pads. The most common interval was every one or two months. There were a few outliers at around a year, and one person who changed it six or seven years ago. Though I'm not entirely convinced that the last one wasn't just saying that <a href="https://knowyourmeme.com/memes/67-meme" target="_blank">for the meme</a>.</p><p>Unfortunately, ESL Counter-Strike's video description is AI-generated, so we aren't getting much insight into why pros change so much. It's fair to assume, though, that it's related to the belief that fresh gear will help them play. You need to be able to glide your mouse consistently on your mouse pad, so frayed edges or grime will naturally get in the way somewhat. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>For the average person, this issue would be near impossible to spot, but pros will be at the top of their game in this regard. Still, one has to wonder how much damage you can really do to a mouse pad in just a single month. </p><p>Mouse types, weight, and grip will likely impact the condition of the gaming mouse pad long term, but it's also partly related to just how much time professionals play games. </p><p>If one were to assume a top esports competitor plays games for equivalent hours to a standard job, that works out to around 40 hours a week. If the average casual player gets an hour or two every weekday, then professional gamers are using their mouse pads four to eight times more than a casual gamer.</p><p>Jacob Fox, PC Gamer's resident mouse pad guy/philosopher, says that mouse pads wear down after a few months, and wear in after a few days, and that's reportedly a good reason for a glass mouse pad. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@eslcounterstrike/video/7620948781537725729" data-video-id="7620948781537725729" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@eslcounterstrike" href="https://www.tiktok.com/@eslcounterstrike">@eslcounterstrike</a>                            <p></p><a target="_blank" title="♬ original sound - ESL Counter-Strike" href="https://www.tiktok.com/music/original-sound-7620948817533274913">♬ original sound - ESL Counter-Strike</a></section>                    </blockquote></div>                <p>So that might make you wonder, "If you're not a pro, how long should you wait to replace your mouse pad?" That's naturally down to personal preference, and how gross your mouse pad makes you feel, but for me, I'd say the answer is "when cleaning it doesn't make it feel very clean anymore."</p><p>So, every couple of hours then?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/some-pro-gamers-change-mouse-pads-every-few-months-and-that-makes-me-wonder-how-often-i-should-change-mine/</link>
                                                                            <description>
                            <![CDATA[ You're telling me people change them? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">859dgqnS4RAFH5dkPwC768</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/527LU4ecbAxxKamj2ouRpC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 16:30:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/527LU4ecbAxxKamj2ouRpC-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Steelseries QcK Performance Balance mouse pad on desk]]></media:description>                                                            <media:text><![CDATA[Steelseries QcK Performance Balance mouse pad on desk]]></media:text>
                                <media:title type="plain"><![CDATA[Steelseries QcK Performance Balance mouse pad on desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/527LU4ecbAxxKamj2ouRpC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Mouse pads are admittedly something I don't tend to think about too much. If it feels good under the palm and doesn't become a hindrance to my movement, I'll continue using it. But, alas, I'm not a pro, and it turns out they get through some of the <a href="https://www.pcgamer.com/best-mouse-pad-for-gaming/" target="_blank">best gaming mouse pads</a> like an actual mouse gets through cheese. That's to say a lot. </p><p><a href="https://www.tiktok.com/@eslcounterstrike/video/7620948781537725729?_r=1&_t=ZN-968g4bdY8sZ" target="_blank">Shared to TikTok </a>by ESL Counter-Strike, one of the world's biggest leagues, it interviewed professional gamers and asked how often they swapped mouse pads. The most common interval was every one or two months. There were a few outliers at around a year, and one person who changed it six or seven years ago. Though I'm not entirely convinced that the last one wasn't just saying that <a href="https://knowyourmeme.com/memes/67-meme" target="_blank">for the meme</a>.</p><p>Unfortunately, ESL Counter-Strike's video description is AI-generated, so we aren't getting much insight into why pros change so much. It's fair to assume, though, that it's related to the belief that fresh gear will help them play. You need to be able to glide your mouse consistently on your mouse pad, so frayed edges or grime will naturally get in the way somewhat. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>For the average person, this issue would be near impossible to spot, but pros will be at the top of their game in this regard. Still, one has to wonder how much damage you can really do to a mouse pad in just a single month. </p><p>Mouse types, weight, and grip will likely impact the condition of the gaming mouse pad long term, but it's also partly related to just how much time professionals play games. </p><p>If one were to assume a top esports competitor plays games for equivalent hours to a standard job, that works out to around 40 hours a week. If the average casual player gets an hour or two every weekday, then professional gamers are using their mouse pads four to eight times more than a casual gamer.</p><p>Jacob Fox, PC Gamer's resident mouse pad guy/philosopher, says that mouse pads wear down after a few months, and wear in after a few days, and that's reportedly a good reason for a glass mouse pad. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@eslcounterstrike/video/7620948781537725729" data-video-id="7620948781537725729" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@eslcounterstrike" href="https://www.tiktok.com/@eslcounterstrike">@eslcounterstrike</a>                            <p></p><a target="_blank" title="♬ original sound - ESL Counter-Strike" href="https://www.tiktok.com/music/original-sound-7620948817533274913">♬ original sound - ESL Counter-Strike</a></section>                    </blockquote></div>                <p>So that might make you wonder, "If you're not a pro, how long should you wait to replace your mouse pad?" That's naturally down to personal preference, and how gross your mouse pad makes you feel, but for me, I'd say the answer is "when cleaning it doesn't make it feel very clean anymore."</p><p>So, every couple of hours then?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ There's a website to competitively guess gaming mouse shapes, and it's a better use of my time than doomscrolling ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'm pretty good with mice: I can tell from feel the difference between the <a href="https://www.google.com/search?q=logitech+superlight+2+dex+pcgamer&rlz=1C1VDKB_enGB1124GB1124&oq=logitech+superlight+2+dex+pcgamer&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRhAMgYIAhBFGEAyBggDEEUYQNIBCDg1NDBqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8" target="_blank">Logitech Pro X Superlight 2 Dex</a> and the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-2-gaming-mouse-review/" target="_blank">Logitech Pro X Superlight 2</a>; I know roughly what most of the Razer product names mean; I think I can tell if a mouse is below 1,000 Hz polling. However, <a href="https://findmymouse.com/play" target="_blank">FindMyMouse</a> and its MouseGuessr mode has proven I'm woefully underprepared to guess the mouse based solely on its silhouette. </p><p>The new mode, which is in beta, takes a database of over 100 gaming mice 3D-scanned from different angles, gives you a silhouette, and makes you guess the mouse. This can be anywhere from big names like Razer and Logitech to the more obscure WLMouse, G-Wolves, and Finalmouse. </p><p>You might think that a selection of 100 possible gaming mice makes it  hard (and it is), but its scoring system will give you points even when you get it wrong. You get percentage points for time to answer, shape similarity, and shape difference in mm. Once you give an answer, you can even click the mouse and get access to its 3D scan and specs, plus a peek at a comparison function. </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>You can even request a mouse with FindMyMouse's browse tab, so the guessing game could get larger with time. I'd personally love to see the likes of <a href="https://www.phoronix.com/review/120" target="_blank">MonsterGecko's Pistol Mouse FPS</a> (and that's only partly because it would make the game easier).</p><p>If you get a little time with it, and find yourself actually getting some mice right, it even has both a ranked and 'Nightmare' ranked mode—if you have an account. The standard ranked mode bases your score on an average of seven rounds of guessing, and the Nightmare mode calculates your average based on 15 rounds of guessing. </p><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="wzqBQb7m4DJqRS2JH4kQ3c" name="C (22)" alt="A screenshot from FindMyMouse's mouse guesser game, showing a guess of the Endgame Gear OP1 8k v2" src="https://cdn.mos.cms.futurecdn.net/wzqBQb7m4DJqRS2JH4kQ3c-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: FindMyMouse)</span></figcaption></figure><p>As a side note, it's also not an awful way to do some research on your next mouse, either. If you really like the <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2 Pro</a>, you can compare its shape and size to other models  to see if it's similar enough for you. Gaming mice in the FindMyMouse database also have scores based on reviews from users, which is pretty neat (even though the 5.8 given to the Logitech G Pro X Superlight is clearly wrong). </p><p>Still, if you find yourself with twenty minutes of spare time and fancy yourself a connoisseur of mice (the big cheese, if you will), give it a go. I certainly enjoyed learning how terrible I am at this guessing game. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/theres-a-website-to-competitively-guess-gaming-mouse-shapes-and-its-a-better-use-of-my-time-than-doomscrolling/</link>
                                                                            <description>
                            <![CDATA[ I'd prefer to look at a scroll wheel than doomscroll. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9tTCgsHoiFZ8nzMZtAtzec</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/id6joTyCdNY6x4DvKKnYGe-1920-80.jpeg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 05 May 2026 12:13:28 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/id6joTyCdNY6x4DvKKnYGe-1920-80.jpeg">
                                                            <media:credit><![CDATA[Logitech]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logitech G Pro X Superlight 2]]></media:description>                                                            <media:text><![CDATA[Logitech G Pro X Superlight 2]]></media:text>
                                <media:title type="plain"><![CDATA[Logitech G Pro X Superlight 2]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/id6joTyCdNY6x4DvKKnYGe-1920-80.jpeg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm pretty good with mice: I can tell from feel the difference between the <a href="https://www.google.com/search?q=logitech+superlight+2+dex+pcgamer&rlz=1C1VDKB_enGB1124GB1124&oq=logitech+superlight+2+dex+pcgamer&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRhAMgYIAhBFGEAyBggDEEUYQNIBCDg1NDBqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8" target="_blank">Logitech Pro X Superlight 2 Dex</a> and the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-2-gaming-mouse-review/" target="_blank">Logitech Pro X Superlight 2</a>; I know roughly what most of the Razer product names mean; I think I can tell if a mouse is below 1,000 Hz polling. However, <a href="https://findmymouse.com/play" target="_blank">FindMyMouse</a> and its MouseGuessr mode has proven I'm woefully underprepared to guess the mouse based solely on its silhouette. </p><p>The new mode, which is in beta, takes a database of over 100 gaming mice 3D-scanned from different angles, gives you a silhouette, and makes you guess the mouse. This can be anywhere from big names like Razer and Logitech to the more obscure WLMouse, G-Wolves, and Finalmouse. </p><p>You might think that a selection of 100 possible gaming mice makes it  hard (and it is), but its scoring system will give you points even when you get it wrong. You get percentage points for time to answer, shape similarity, and shape difference in mm. Once you give an answer, you can even click the mouse and get access to its 3D scan and specs, plus a peek at a comparison function. </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>You can even request a mouse with FindMyMouse's browse tab, so the guessing game could get larger with time. I'd personally love to see the likes of <a href="https://www.phoronix.com/review/120" target="_blank">MonsterGecko's Pistol Mouse FPS</a> (and that's only partly because it would make the game easier).</p><p>If you get a little time with it, and find yourself actually getting some mice right, it even has both a ranked and 'Nightmare' ranked mode—if you have an account. The standard ranked mode bases your score on an average of seven rounds of guessing, and the Nightmare mode calculates your average based on 15 rounds of guessing. </p><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="wzqBQb7m4DJqRS2JH4kQ3c" name="C (22)" alt="A screenshot from FindMyMouse's mouse guesser game, showing a guess of the Endgame Gear OP1 8k v2" src="https://cdn.mos.cms.futurecdn.net/wzqBQb7m4DJqRS2JH4kQ3c-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: FindMyMouse)</span></figcaption></figure><p>As a side note, it's also not an awful way to do some research on your next mouse, either. If you really like the <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2 Pro</a>, you can compare its shape and size to other models  to see if it's similar enough for you. Gaming mice in the FindMyMouse database also have scores based on reviews from users, which is pretty neat (even though the 5.8 given to the Logitech G Pro X Superlight is clearly wrong). </p><p>Still, if you find yourself with twenty minutes of spare time and fancy yourself a connoisseur of mice (the big cheese, if you will), give it a go. I certainly enjoyed learning how terrible I am at this guessing game. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Everyone's favorite egg-shaped rodent might be getting the Superlight treatment, meaning Logitech could once again snatch the budget gaming mouse crown  ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Only recently did we swap out the internet's most beloved egg-shaped mouse, the Logitech G305, as our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank">best budget wireless gaming mouse</a>, with the <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a> Pro. Although the G3 V2 Pro shares the same eggy shape—it's a G305 'clone'—the Logi mouse is simply a little dated compared to the G3 V2 Pro which is much lighter and has a better sensor. But now Logi could strike back to steal the crown once again.</p><p>That's because, if some packaging that was recently <a href="https://gall.dcinside.com/mgallery/board/view?id=mouse&no=945761" target="_blank">leaked on a Korean forum</a> is legit—and it seems so to my ageing eyes, at least—then it looks like there exists a Logitech G305 X Superlight (via <a href="https://www.reddit.com/r/MouseReview/comments/1swb3ut/logitech_g305_x_superlightother_g304x/" target="_blank">r/MouseReview subreddit</a>). Hopefully coming soon to the Western market, too? We'll see. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2050154226471326070"><p lang="en" dir="ltr">The G305 X Superlight has been leaked.I thought we wouldn't live long enough to see this... pic.twitter.com/lbCcB8vZdV<a href="https://twitter.com/cantworkitout/status/2050154226471326070">May 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The 'Superlight' designator, of course, means that the weight is shaved down, and here it looks like—one moment,<em>'computer, enhance'—</em>nope, I still can't see what weight that says on the packaging. But hold up, a Facebook Marketplace listing (also via <a href="https://www.reddit.com/r/MouseReview/comments/1swdau0/logitech_g305_x_superlight_on_facebook_marketplace/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">r/MouseReview subreddit</a>) seems to list the weight at 59 g, which does look like what I see on the packaging if I squint very hard. That would make sense, as it would weigh roughly the same as the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-2-gaming-mouse-review/" target="_blank">Superlight 2</a> and <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Superstrike</a>.</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>It also seems the new G305 will receive an upgraded 44,000 DPI sensor, which is a far cry from the 12,000 max DPI sensor of the original. And it's even faster than the 26,000 DPI PAW 3395 sensor in the Mchose G3 V2 Pro. </p><p>To be clear, though, much will still depend on pricing. What made our original eggy friend so appealing was its price, and the same goes for the Mchose clone, the 26K DPI Pro version of which you can <a href="https://www.mchose.store/products/mchose-g3-v2-wireless-gaming-mouse" target="_blank">pick up for $40</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:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MvZFY2v3xmpDYDvrDLcn9S" name="IMG_7841" alt="The blue Mchose G3 V2 gaming mouse from the side, in a hand in a garden" src="https://cdn.mos.cms.futurecdn.net/MvZFY2v3xmpDYDvrDLcn9S-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">This is the Mchose G3 V2, which is essentially a Logitech G305 clone. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Logitech also recently <a href="https://www.techpowerup.com/344703/logitech-launches-g304-x-lightspeed-gaming-mouse-in-china" target="_blank">launched a G304 X</a>, which seems to essentially be a lightweight G305 just like this new Superlight, but that one seems to only be for the Chinese market. It also has a 25,600 DPI HERO 25K sensor, so more in line with the Mchose mouse. </p><p>If Logi releases this G305 X Superlight and can actually keep its price tag low, we might have a new budget gaming mouse in town. It does all depend on that price tag, though, as that's what makes any G305 or G305 clone so appealing in the face of more premium and less egg-shaped competition. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/everyones-favorite-egg-shaped-rodent-might-be-getting-the-superlight-treatment-meaning-logitech-could-once-again-snatch-the-budget-gaming-mouse-crown/</link>
                                                                            <description>
                            <![CDATA[ It will all depend on that price tag, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4hNMefTPzCVPgbuDP2RFXM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BN65MdmGUTEFYosGRxjpAo-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 01 May 2026 15:30:48 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BN65MdmGUTEFYosGRxjpAo-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logitech g305]]></media:description>                                                            <media:text><![CDATA[Logitech g305]]></media:text>
                                <media:title type="plain"><![CDATA[Logitech g305]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BN65MdmGUTEFYosGRxjpAo-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Only recently did we swap out the internet's most beloved egg-shaped mouse, the Logitech G305, as our pick for the <a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-budget-wireless-gaming-mouse" target="_blank">best budget wireless gaming mouse</a>, with the <a href="https://www.pcgamer.com/hardware/gaming-mice/mchose-g3-v2-review/" target="_blank">Mchose G3 V2</a> Pro. Although the G3 V2 Pro shares the same eggy shape—it's a G305 'clone'—the Logi mouse is simply a little dated compared to the G3 V2 Pro which is much lighter and has a better sensor. But now Logi could strike back to steal the crown once again.</p><p>That's because, if some packaging that was recently <a href="https://gall.dcinside.com/mgallery/board/view?id=mouse&no=945761" target="_blank">leaked on a Korean forum</a> is legit—and it seems so to my ageing eyes, at least—then it looks like there exists a Logitech G305 X Superlight (via <a href="https://www.reddit.com/r/MouseReview/comments/1swb3ut/logitech_g305_x_superlightother_g304x/" target="_blank">r/MouseReview subreddit</a>). Hopefully coming soon to the Western market, too? We'll see. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2050154226471326070"><p lang="en" dir="ltr">The G305 X Superlight has been leaked.I thought we wouldn't live long enough to see this... pic.twitter.com/lbCcB8vZdV<a href="https://twitter.com/cantworkitout/status/2050154226471326070">May 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The 'Superlight' designator, of course, means that the weight is shaved down, and here it looks like—one moment,<em>'computer, enhance'—</em>nope, I still can't see what weight that says on the packaging. But hold up, a Facebook Marketplace listing (also via <a href="https://www.reddit.com/r/MouseReview/comments/1swdau0/logitech_g305_x_superlight_on_facebook_marketplace/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">r/MouseReview subreddit</a>) seems to list the weight at 59 g, which does look like what I see on the packaging if I squint very hard. That would make sense, as it would weigh roughly the same as the <a href="https://www.pcgamer.com/logitech-g-pro-x-superlight-2-gaming-mouse-review/" target="_blank">Superlight 2</a> and <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Superstrike</a>.</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>It also seems the new G305 will receive an upgraded 44,000 DPI sensor, which is a far cry from the 12,000 max DPI sensor of the original. And it's even faster than the 26,000 DPI PAW 3395 sensor in the Mchose G3 V2 Pro. </p><p>To be clear, though, much will still depend on pricing. What made our original eggy friend so appealing was its price, and the same goes for the Mchose clone, the 26K DPI Pro version of which you can <a href="https://www.mchose.store/products/mchose-g3-v2-wireless-gaming-mouse" target="_blank">pick up for $40</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:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MvZFY2v3xmpDYDvrDLcn9S" name="IMG_7841" alt="The blue Mchose G3 V2 gaming mouse from the side, in a hand in a garden" src="https://cdn.mos.cms.futurecdn.net/MvZFY2v3xmpDYDvrDLcn9S-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">This is the Mchose G3 V2, which is essentially a Logitech G305 clone. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Logitech also recently <a href="https://www.techpowerup.com/344703/logitech-launches-g304-x-lightspeed-gaming-mouse-in-china" target="_blank">launched a G304 X</a>, which seems to essentially be a lightweight G305 just like this new Superlight, but that one seems to only be for the Chinese market. It also has a 25,600 DPI HERO 25K sensor, so more in line with the Mchose mouse. </p><p>If Logi releases this G305 X Superlight and can actually keep its price tag low, we might have a new budget gaming mouse in town. It does all depend on that price tag, though, as that's what makes any G305 or G305 clone so appealing in the face of more premium and less egg-shaped competition. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>